Tensorflow数据读取之tfrecord

文章目录tfrecordtfrecord的使用流程写入tfrecord文件读取tfrecord文件tfrecord中的数据格式tfrecord中对于变长数据和定长数据的处理tfrecord中生成batch_data的方法插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数...
摘要由CSDN通过智能技术生成

tfrecord

这次只记录我在实验中遇到的情况和略懂的几点,多余的我没有怎么看【笑哭】,一个是因为懒,一个是因为官网介绍页太少了8,有点心塞~~
开门见山,关于Tensorflow读取数据,官网给出了三种方法,分别是:
1.供给数据(Feeding): 在TensorFlow程序训练或者测试的每一个epoch,在tf.Session().run()函数中,以字典的形式通过feed_dict参数进行赋值。
2.从文件读取数据: 在TensorFlow图的起始, 让一个输入管线从文件中读取数据。
3.预加载数据: 在TensorFlow图中定义常量或变量来保存所有数据(仅适用于数据量比较小的情况)。

截止到目前为止,由于我使用tensorflow的时间不长,次数不多,所以只是尝试过第一种和第三种方法。最近刚刚尝试了第三种方法,使用的是tensorflow内定的标准读取数据的格式—tfrecord,在这里记录一下。(好像并没有开门见山,尴尬脸)

TFRecords是一种二进制文件,这个格式我真的理解无能,据说它不对数据进行压缩,所以可以被快速加载到内存中,要复制和移动的时候也是咻的一下就搞定,所以说人家作为内定格式是有原因的,嗯,没错,凭实力内定。但是这种格式不支持随机访问,因此它适合于大量的数据流,但不适用于快速分片或其他非连续存取。

tfrecord的使用流程

写入tfrecord文件

TFRecords文件包含了tf.train.Example 协议内存块(protocol buffer)(协议内存块包含了字段 Features)。我们可以写一段代码获取你的数据, 将数据填入到Example协议内存块(protocol buffer),将协议内存块序列化为一个字符串, 并且通过tf.python_io.TFRecordWriter 写入到TFRecords文件。

上面这段话是从别人那里复制来的。用更通俗的话来解释一下。分两种情况来说:
1.一次往tfrecord文件中存储一个样本数据
2.一次往tfrecord文件中存储一个bacth的样本数据
对于第一种情况(一次往tfrecord文件中存储一个样本数据),每一个样本的特征构造一个dict={‘特征1’:“value1”,"特征2”:“value2”,…,“特征n”:“value n”}。
首先通过tf.python_io.TFRecordWriter函数打开要写入的tfrecord文件。

writer = tf.python_io.TFRecordWriter(outfile)

然后通过下面这种形式把样本特征存到example中。

example = tf.train.Example(
                    features=tf.train.Features( #构造每个样本的信息键值对
                        feature={
   
                            'fm_feat_indices': tf.train.Feature(
                                bytes_list=tf.train.BytesList(value=[fm_feat_indices_str])),
                            'fm_feat_values': tf.train.
  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值