[tensorflow] - csv文件读取

34 篇文章 0 订阅
3 篇文章 0 订阅
  • 参考

  • 文件流程
    在这里插入图片描述

  • csv读取流程
    在这里插入图片描述

  • 函数的流程

在这里插入图片描述

import tensorflow as tf
import os

"""
    tensorflow中csv文件的读取
    1、 先找到文件,构造一个列表
    
    2、 构造一个文件队列
    
    3、 读取(read)队列内容
            csv: 读取一行
            二进制文件: 指定一个样本的bytes读取
            图片文件: 按一张一张的读取
    
    4、 解码(decode)
    tf.decode_csv(records, record_defaults=None,field_delim = None, name=None)
    
    
    5、 批处理(多个样本)
    批处理大小,和数量无关.取决于该批次处理数量的大小
"""


def csvread(filelist):
    """
    读取CSV文件
    :param filelist: 文件路径 + 名字列表
    :return: 读取的内容
    """

    # 1. 构造文件队列
    file_queue = tf.train.string_input_producer(filelist)

    # 2. 构造csv阅读器读取
    reader = tf.TextLineReader()

    key, value = reader.read(file_queue)

    # 3. 对每行内容进行解密
    # record_defaults: 指定每一个样本额每一列的类型,指定默认值 [["None"], [4.0]]
    records = [["None"], ["None"]]
    example, label = tf.decode_csv(value, record_defaults=records)

    # 4. 想要读取多个,需要进行批处理
    example_batch, label_batch = tf.train.batch([example, label], batch_size=9, num_threads=1, capacity=9)
    print(example_batch, label_batch)

    return example_batch, label_batch


if __name__ == "__main__":
    # 1、找到文件,放入列表  路径 + 名字
    file_name = os.listdir("./data/csvdata/")

    filelist = [os.path.join("./data/csvdata", file) for file in file_name]

    # print(file_name)
    example_batch, label_batch = csvread(filelist)

    # 开启会话运行结果
    with tf.Session() as sess:
        # 定义一个线程协调器
        coord = tf.train.Coordinator()

        # 开启读文件的线程
        threads = tf.train.start_queue_runners(sess, coord=coord)

        # 打印读取的内容
        print(sess.run([example_batch, label_batch]))

        # 把程序的图结构写入事件
        filewriter = tf.summary.FileWriter("./summary/", graph=sess.graph)

        # 回收子线程
        coord.request_stop()

        coord.join(threads)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值