繁体   English   中英

使用Tensorflow从CSV文件加载图像和标签

[英]Loading images and labels from csv file using Tensorflow

我一直在尝试让TensorFlow io api今早开始工作。

经过一些研究,我设法读取了数据,但是出队时我无法正确绑定图像和标签。

这是我写的代码:

# load csv content
csv_path = tf.train.string_input_producer(['list1.csv', 'list2.csv'])
textReader = tf.TextLineReader()
_, csv_content = textReader.read(csv_path)
im_name, label = tf.decode_csv(csv_content, record_defaults=[[""], [1]])

# load images
im_content = tf.read_file(im_dir+im_name)
image = tf.image.decode_png(im_content, channels=3)
image = tf.cast(image, tf.float32) / 255.
image = tf.image.resize_images(image, 640, 640)

# make batches
im_batch, lb_batch = tf.train.batch([image, label], batch_size=batch)

im_batchlb_batch的顺序混乱了(图像绑定到随机标签)。

知道发生了什么事吗? 谢谢。

您列出的代码没有问题。

im_batch, lb_batch = tf.train.batch([image, label], batch_size=batch)

上面的行将图像和标签绑定到同一队列,因此,无论何时在im_batch或lb_batch上执行操作,该队列都会从另一个队列中弹出一批数据单元。 因此,常见的错误可能是分别调用im_batch.eval()和lb_batch.eval():

# this is wrong
images = im_batch.eval()
labels = lb_batch.eval()

调用im_batch.eval()后,lb_batch也弹出相同数量的数据单元,因为它们绑定在一个队列中。 因此,当紧接着调用lb_batch.eval()时,它实际上给出了下一批的标签。

正确的方法是将im_batch和lb_batch放入图或sess.run()操作列表的单元操作中:

  1. 这是对的

    损失= your_network_model(im_batch,lb_batch)loss.eval()

2。

# this is correct
images, labels = sess.run([im_batch, lb_batch])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM