2016-07-14 1 views
6

Извините, если я испортил название, я не знал, как это сформулировать. В любом случае, у меня есть тензор набора значений, но я хочу убедиться, что каждый элемент в тензоре имеет диапазон от 0 до 255 (или работает 0 - 1). Тем не менее, я не хочу, чтобы все значения добавлялись до 1 или 255, как softmax, я просто хочу уменьшить масштаб значений.Изменение масштаба тензора в тензорном потоке

Есть ли способ сделать это?

Спасибо!

ответ

11

Вы пытаетесь нормализовать данные. Классическая формула нормализации это одна:

normalize_value = (value − min_value)/(max_value − min_value) 

Реализация на tensorflow будет выглядеть следующим образом:

tensor = tf.div(
    tf.subtract(
     tensor, 
     tf.reduce_min(tensor) 
    ), 
    tf.subtract(
     tf.reduce_max(tensor), 
     tf.reduce_min(tensor) 
    ) 
) 

Все значения тензора будут betweetn 0 и 1.

ВАЖНО: убедитесь, что тензор имеет значения float/double, или выходной тензор будет иметь только нули и единицы. Если у вас есть тензор целых чисел, то сначала:

tensor = tf.to_float(tensor)