gpt4 book ai didi

python - 使用 Tensorflow 从 csv 文件加载图像和标签

转载 作者:太空宇宙 更新时间:2023-11-04 08:49:10 24 4
gpt4 key购买 nike

今天早上我一直在努力让 TensorFlow io api 正常工作。

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

这是我写的代码:

# 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 的顺序被打乱了(图像绑定(bind)到随机标签)。

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

最佳答案

你列出的代码没有问题。

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

上面的行将图像和标签绑定(bind)到同一个队列,因此无论何时对 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 也会弹出相同数量的数据单元,因为它们绑定(bind)在一个队列中。所以当接下来调用 lb_batch.eval() 时,它实际上给出了下一批处理的标签。

正确的做法是将 im_batch 和 lb_batch 放入一个单元操作中,可以是图或 sess.run() 操作列表:

  1. 这是正确的

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

2.

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

关于python - 使用 Tensorflow 从 csv 文件加载图像和标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37198357/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com