1.建立文件列表多线程
path='./data/csvdata/' file_names=os.listdir(path) file_list=[os.path.join(path,file_name)for file_name in file_names]
2.读文件文件列表到文件队列线程
file_queue=tf.train.string_input_producer(file_list)
3.构建文件阅读器读取队列文件code
reader=tf.TextLineReader() key,value=reader.read(file_queue)
4.解码队列
recodes=[['None'],['None']] example,label=tf.decoder_csv(value,record_defaults=records)
5.批处理图片
tf.train.batch([example,label],batch_size=9,num_threads=2,capacity=100)
6.开启tf会话多线程进行处理ci
coord=tf.train.Coordinator() threads=tf.start_queue_runners(sess,coord=coord) coord.request_stop() coord.join(threads)
完整代码input
import tensorflow as tf import os ''' 1.构建文件队列 2.读取队列内容,,默认读取一个样本 1.csv文件,读取一行 2.二进制文件,指定一个样本的bytes读取 3.图片文件,默认读取一张一张读取 3.解码 4.批处理读取文件 5.主线程取样本数据训练 ''' def csv_read(file_list): # 1.构造文件队列 file_queue = tf.train.string_input_producer(file_list) # 2.构造阅读器,读取文件 reader = tf.TextLineReader() key, value = reader.read(file_queue) # 3.进行文件解码 record = [["None"], ["None"]] example, label = tf.decode_csv(value, record_defaults=record) # 4.批处理 batch_example, batch_label = tf.train.batch([example, label], batch_size=9, num_threads=1, capacity=9) return batch_example, batch_label if __name__ == '__main__': file_names = os.listdir("./data/csvdata") file_list = [os.path.join('./data/csvdata', file) for file in file_names] # print(file_list) example, label = csv_read(file_list) with tf.Session() as sess: coord = tf.train.Coordinator() threads = tf.train.start_queue_runners(sess, coord=coord) print(sess.run([example, label])) coord.request_stop() coord.join(threads)