前言:当深度学习使用的训练数据文件过大,使用pandas读取时会一次性读取全部数据,给内存带来了极大的压力。Tensorflow提供了一个使用队列且多线程读取文件的机制,缓解了内存的压力。该程序完整代码:https://github.com/iapcoder/TensorflowReadCSV
一 步骤:
1、构造文件队列
file_queue = tf.train.string_input_producer(file_list) # file_list: csv文件路径列表
2、构造csv阅读器读取队列数据(读取的是一行)
reader = tf.TextLineReader(skip_header_lines=1) # skip_header_lines 指定跳过几行
key, value = reader.read(file_queue) # key:行号 value: 内容
3、对每行的内容进行解码
records = [[1.0], [1]] # 指定每一列的类型,1.0表示是浮点型,缺失则为1.0, 1表示整型,缺失则为1,“None”表示字符串,缺失则为None
example, label = tf.decode_csv(value, record_defaults=records) # 返回的是一行的数据
4、若想读取多个数据,需要使用批处理
example_batch, label_batch = tf.train.batch([exa