我试图在tf中读取图像。使用图像文件名,我执行以下简单操作。
image_string = tf.read_file(imagefilename)
image = tf.image.decode_image(image_string)
现在,当我在sess.run
之后打印图像时,我得到张量中所有索引的值都相同而且是254.任何猜测我错了吗?
调试指针也有帮助。
批处理代码:
def _parse_image(self,imagefile,text,label):
image_string = tf.read_file(imagefile)
image = tf.image.decode_image(image_string)
image = tf.cast(image, tf.float32)
return image, text, label
def get_batch(self,typefile="train",batch_size = 64, num_workers = 40):
train_dataset = tf.contrib.data.Dataset.from_tensor_slices((images, text, labels)) // This works fine. the filename, text and labels are correctly loaded
train_dataset = train_dataset.map(self._parse_image,num_threads=num_workers, output_buffer_size= batch_size)
batched_train_dataset = train_dataset.batch(batch_size)
return batched_train_dataset
batch_train_dataset = get_batch("train")
init_op = tf.global_variables_initializer()
iterator = batch_train_dataset.make_initializable_iterator()
next_element = iterator.get_next()
with tf.Session() as sess:
sess.run(init_op)
sess.run(iterator.initializer)
out = sess.run(next_element)
tf.Print(out)
当我打印出来时,我得到的文字和标签都很好,但图像都具有相同的值。我做错了什么?
答案 0 :(得分:1)
这段代码是正确的。尝试使用此代码段阅读this image:
image_string = tf.read_file('friday.jpg')
image = tf.image.decode_image(image_string)
with tf.Session() as session:
img_value = session.run(image)
print(np.min(img_value), np.max(img_value), np.mean(img_value))
..你应该得到:
0 255 93.6996542494
...这是图像像素的合理分布。
254
的数组,这将非常奇怪,您可能需要重新安装tensorflow。friday.jpg
,但imagefilename
失败,请尝试检查图片的格式。它被腐蚀了吗?