with tf.name_scope(scope, 'eval_image', [image, height, width]):
if image.dtype != tf.float32:
image = tf.image.convert_image_dtype(image, dtype=tf.float32)
if height and width:
# Resize the image to the specified height and width.
image = tf.expand_dims(image, 0)
image = tf.image.resize_bilinear(image, [height, width],
align_corners=False)
image = tf.squeeze(image, [0])
image = tf.subtract(image, 0.5)
image = tf.multiply(image, 2.0)
return image
когда мы делаем предварительную обработку изображения, прежде чем отправлять его в нейронную сеть (более конкретно, GoogLeNet), почему они пишут код:
image = tf.subtract(image, 0.5)
image = tf.multiply(image, 2.0)
Какова теория этого? почему нам нужна эта процедура. Если я попытаюсь проверить, как это выглядит, используя:
plt.imshow(image)
Изображение не может отображаться.
Вычитание и умножение выполняются для масштабирования изображений между -1 и 1.
Они делают это, чтобы перемасштабировать изображение на [-1, 1] из [0,1]. Они хотят, чтобы все изображения были в одном формате, поэтому они требуют этого шага.