tf.train.string_input_producer

tf.train.string_input_producer只是读入文件还没有解析,需要tf.WholeFileReader()来解析文件

import tensorflow as tf
# images=['image1.jpg','image2.jpg','image3.jpg','image4.jpg']
# labels=[1,2,3,4]
#
# #创建文件名队列(也就是内存队列)
# [images,labels]=tf.train.slice_input_producer([images,labels],
#                               num_epochs=2,#epochs循环数,改成None则只要获取队列就有
#                               shuffle=True)#shuffle文件队列打乱
#                             #输出两个tensor
# with tf.Session() as sess:#后端运算
#     sess.run(tf.local_variables_initializer())#上述定义了2和True,但是在后端运行时不会被使用,需要这里的初始化,才能完成赋值
#     tf.train.start_queue_runners(sess=sess)#启动队列填充过程
#     for i in range(8):#一个epoachs长度4,2个就是8
#         print(sess.run([images,labels]))#读取文件队列
###slice实际输出是tensor,通过sess.run我们就可以直接获取tensor
###string实际上是输出文件队列,需要从文件队列数据读取(不是张量,所以无法sess.run来获取)

filename=['data/A.csv','data/B.csv','data/C.csv']
file_queue=tf.train.string_input_producer(filename,
                                          shuffle=True,
                                          num_epochs=2)
reader=tf.WholeFileReader()#定义文件读取器
key,value=reader.read(file_queue)

with tf.Session() as sess:
    sess.run(tf.local_variables_initializer())#变量初始化赋值
    tf.train.start_queue_runners(sess=sess)#开启队列读入
    for i in range(6):
        print(sess.run([key,value]))