我正在尝试使用Tensorflow构建一个简单的CNN。问题是我无法读取一个简单的.png文件来提供CNN。
>>> filename = tf.constant("training/a1.png")
>>> filename
<tf.Tensor 'Const_1:0' shape=() dtype=string>
>>> image_string = tf.read_file(filename)
>>> image_string
<tf.Tensor 'ReadFile_1:0' shape=() dtype=string>
>>> image_decoded = tf.image.decode_png(image_string)
>>> image_decoded
<tf.Tensor 'DecodePng_1:0' shape=(?, ?, ?) dtype=uint8>
正如您在上面的代码中看到的那样。 tf.image.decode_png(image_string)返回未知形状的张量。
谢谢vladimir-bystricky!我知道了。以下是可以帮助其他人的代码。
>>> import tensorflow as tf
>>> filename = tf.constant("training/a1.png")
>>> image_string = tf.read_file(filename)
>>> image_decoded = tf.image.decode_png(image_string)
>>> shape = tf.shape( image_decoded )
>>> sess = tf.Session()
>>> print(sess.run( shape ) )
[360 360 4]
答案 0 :(得分:1)
这是正确的行为,因为在您的代码中,您只创建一个图形,并且TF在此步骤中不会真正读取png文件,但只会在会话中启动Graph时创建将执行此操作的操作。操作结果是Tensor,形状未知(此刻)。您可以调整大小或以预定义的大小裁剪它。