【学习笔记】tensorflow文件读取

2022-03-09

目录

我们先看一下读取文件并将读取的数据处理成张量结果的过程:

一般数据文件格式包括文本、excel 和图像数据。那么除了这些之外,还有相应的解析函数。还有指定的文件格式。

还提供了一种内置的文件格式,其中二进制数据和训练类标签数据存储在同一个文件中。在模型训练之前将图像等文本信息转换为格式。文件是一种格式。数据未压缩,可以快速加载到内存中。该文件包含 tf.train。 ,需要将其填充到协议缓冲区中,将协议缓冲区序列化为字符串,然后使用该字符串将该字符串写入文件。在图像处理中,我们将介绍整个过程和详细参数。

文件读取文件队列构造

tf.train.r(, ,=True):将输出字符串(例如文件名)输入到管道队列中

将文件名列表交给 tf.train.r 函数。 r 生成文件读取器获取数据所需的先进先出队列。 r 提供的可配置参数用于设置文件名无序和最大训练迭代次数。所有文件名都将添加到每个 epoch 的文件名队列中。如果 = True,则文件名将无序。处理。一个进程是比较统一的,所以它可以产生一个平衡的文件名队列。

这个工作线程是一个独立于文件读取器的线程,因此乱序和将文件名推送到文件名队列的过程不会阻止文件读取器运行。根据你的文件格式,选择对应的文件阅读器,然后提供文件名队列给阅读器的读取方法。 的 read 方法输出一个表示输入文件的键和其中的记录(用于调试),并返回一个字符串标量,该标量可以由一个或多个解析器解码,或者通过转换操作是一个张量并构造为样本。

文件阅读器

根据文件格式,选择对应的文件阅读器

class tf.:以逗号分隔值(CSV)格式读取文本文件,默认逐行读取

class tf.der():读取二进制文件,其中每条记录都是固定字节数

tf.: 读取文件

文件内容解码器

从文件中读取字符串时,需要函数将这些字符串解析为张量

tf.(,=None, = None ,name=None):将 CSV 转换为 ,与 tf 一起使用。

tf.(bytes,,=None,name=None):将字节转换为数值向量表示,words段是字符串类型的张量,配合函数tf.der使用,二进制读入uint8格式

开启线程操作

tf.train.(sess=None, coord=None):收集图中所有队列线程并启动线程

管道读端批处理

tf.train.batch(,, = 1, = 32,name =None):读取指定大小的张量(个数)

tf.train.(,,,, =1,):以随机顺序读取指定大小(个数)的张量

CSV文件读取案例

import tensorflow as tf
import os
def readcsv(filelist):
    """
    读取csv文件
    """
    # 构造文件队列
    file_queue = tf.train.string_input_producer(filelist)
    # 构建阅读器
    reader = tf.TextLineReader()
    key, value = reader.read(file_queue)
    # 对每行内容进行解码
    records = [["None"], ["None"]]
    example, label = tf.decode_csv(value, record_defaults=records)
    # 批处理
    example_batch, label_batch = tf.train.batch([example, label], batch_size=10, num_threads=1, capacity=10)
    return example_batch, label_batch
if __name__ == '__main__':
    filelist = os.listdir("./data/csvdata")
    filelist = ["./data/csvdata/{}".format(i) for i in filelist]
    example_batch, label_batch = readcsv(filelist)
    with tf.Session() as sess:
        sess.run(tf.local_variables_initializer())
        sess.run(tf.global_variables_initializer())
        # 线程协调器
        coord = tf.train.Coordinator()
        # 开启读取文件线程
        threads = tf.train.start_queue_runners(sess, coord=coord)
        # 打印数据
        print(sess.run([example_batch, label_batch]))
        coord.request_stop()
        coord.join()

分类:

技术要点:

相关文章:

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片