为什么他们在tensorflow cifar10教程中设置浮动图像的形状?

时间:2017-04-23 19:13:27

标签: python tensorflow

Tensorflow cifar10 tutorial中,在 distorted_input 函数中,他们通过执行设置浮动图像的形状。

float_image.set_shape([height, width, 3])

但是当我们加载它时,张量已经处于那个形状中distorted_image

distorted_image = tf.random_crop(reshaped_image, [height, width, 3])

为什么在将张量函数传递给批处理函数之前,我们需要再次设置张量的形状。

1 个答案:

答案 0 :(得分:0)

以下是我根据文档完成的原因。我们从

开始
distorted_image = tf.random_crop(reshaped_image, [height, width, 3])
distorted_image = tf.image.random_flip_left_right(distorted_image)
distorted_image = tf.image.random_brightness(distorted_image, max_delta=63)
distorted_image = tf.image.random_contrast(distorted_image, lower=0.2, upper=1.8)
float_image = tf.image.per_image_standardization(distorted_image)

random_crop()之后,我们知道了张量的形状,从文档中random_flip_left_right()后形状保持不变。但是文档并没有说明在random_brightness()random_contrast()之后保留了形状。 (注意先前函数之间的区别,其中在返回参数中提到形状保持不变)。

据我所知,TF之后并不确切知道图像的形状,我们只是用set_shape将其提醒到TF:

  

tf.Tensor.set_shape方法更新Tensor的静态形状   物体,通常用于提供额外的形状   无法直接推断的信息。