如何解决使用CSV文件加载数据但在Tensorflow中获得错误的顺序
我现在正尝试从csv文件加载图像以测试模型。我的csv文件如下所示:
./input/test/gray/G0000.png,./input/test/RGB/R0000.png,./input/test/label/L0000.png
./input/test/gray/G0001.png,./input/test/RGB/R0001.png,./input/test/label/L0001.png
./input/test/gray/G0002.png,./input/test/RGB/R0002.png,./input/test/label/L0002.png
./input/test/gray/G0003.png,./input/test/RGB/R0003.png,./input/test/label/L0003.png
./input/test/gray/G0004.png,./input/test/RGB/R0004.png,./input/test/label/L0004.png
./input/test/gray/G0005.png,./input/test/RGB/R0005.png,./input/test/label/L0005.png
./input/test/gray/G0006.png,./input/test/RGB/R0006.png,./input/test/label/L0006.png
./input/test/gray/G0007.png,./input/test/RGB/R0007.png,./input/test/label/L0007.png
./input/test/gray/G0008.png,./input/test/RGB/R0008.png,./input/test/label/L0008.png
./input/test/gray/G0009.png,./input/test/RGB/R0009.png,./input/test/label/L0009.png
我使用以下代码加载这些图像以测试模型:
import tensorflow as tf
import model
def load_samples(csv_name):
filename_queue = tf.train.string_input_producer(
[csv_name])
reader = tf.TextLineReader()
_,csv_filename = reader.read(filename_queue)
record_defaults = [tf.constant([],dtype=tf.string),tf.constant([],dtype=tf.string)]
filename_i,filename_j,filename_k = tf.decode_csv(
csv_filename,record_defaults=record_defaults)
file_contents_i = tf.read_file(filename_i)
file_contents_j = tf.read_file(filename_j)
file_contents_k = tf.read_file(filename_k)
image_decoded_A = tf.image.decode_png(
file_contents_i,channels=model.IMG_CHANNELS,dtype=tf.uint8)
image_decoded_B = tf.image.decode_png(
file_contents_j,dtype=tf.uint8)
image_decoded_C = tf.image.decode_png(
file_contents_k,channels=1,dtype=tf.uint8)
image_decoded_A = tf.cast(image_decoded_A,tf.float32)
image_decoded_B = tf.cast(image_decoded_B,tf.float32)
image_decoded_C = tf.cast(image_decoded_C,tf.float32)
return image_decoded_A,image_decoded_B,image_decoded_C
def load_data(csv_name,batch_size):
image_i,image_j,label_i = load_samples(csv_name)
label_j = label_i
# Preprocessing:
image_i = tf.image.resize_images(
image_i,[model.IMG_HEIGHT,model.IMG_WIDTH])
image_j = tf.image.resize_images(
image_j,model.IMG_WIDTH])
label_i = tf.image.resize_images(
label_i,model.IMG_WIDTH])
label_j = tf.image.resize_images(
label_j,model.IMG_WIDTH])
image_i = tf.subtract(tf.div(image_i,127.5),1)
image_j = tf.subtract(tf.div(image_j,1)
label_i = tf.div(label_i,255.0)
label_j = tf.div(label_j,255.0)
images_i,labels_i = tf.train.batch([image_i,label_i],batch_size)
images_j,labels_j = tf.train.batch([image_j,label_j],batch_size)
#images_j,labels_j = tf.train.shuffle_batch([image_j,batch_size,5000,100)
inputs = {
'images_i': images_i,'images_j': images_j,'labels_i': labels_i,'labels_j': labels_j
}
return inputs
filename_i,filename_j,filename_k分别对应于灰色,RGB和标签文件夹中的数据。但是当我在模型中加载数据时,顺序不是我想要的顺序(0,1,2,3 ...,9),而是得到(0,6,8,..),我使用coord = tf.train.Coordinator()
和threads = tf.train.start_queue_runners(coord=coord)
来运行模型。我不知道我在做什么错。有人可以帮我吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。