tensorflow数据集制作/文件队列读取方式

本文介绍了TensorFlow中数据读取的三种方式,重点讲解了文件读取,特别是针对大规模数据集的二进制格式处理。通过文件队列解决GPU资源管理,避免一次性加载大量数据导致内存压力。并讨论了如何制作TFRecords格式的数据集,以及在CNN分类时遇到的资源耗尽问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3种数据读取方式

TensorFlow程序读取数据一共有3种方法:
供给数据(Feeding): 在TensorFlow程序运行的每一步, 让Python代码来供给数据。
从文件读取数据: 在TensorFlow图的起始, 让一个输入管线从文件中读取数据。
预加载数据: 在TensorFlow图中定义常量或变量来保存所有数据(仅适用于数据量比较小的情况)。

以上3种方式官网中均有介绍
1. input = tf.placeholder(tf.float32) feed方式,先定义一个占位符,需要sess.run()的时候把数据传进去。
3.预加载,如下,讲数据保存在常量中,这个方法对于大数据不合适,内存资源不够。

training_data = ...
training_labels = ...
with tf.Session():
  input_data = tf.constant(training_data)
  input_labels = tf.constant(training_labels)

文件读取方式

使用原因:例如图片分类场景中,我们要使用自己的数据集,数据集比较大,需要动态的去添加数据,这样可以使用占位符,也可以利用文件读取的方式,这种方式更方便。下面我们介绍文件读取方式。(这里特别补充一个问题,队列是用来解决gpu空闲和内存问题的。所有的图片同时读到内存中是非常大的,内存可能承受不了,有了队列之后,每一次都从队列加载到内存队列中,这样就可以添加比较大的图片了。http://geek.youkuaiyun.com/news/detail/201552 详解TENSORFLOW读取机制)

官网中给出的一般步骤
一共典型的文件读取管线会包含下面这些步骤:
`文件名列表
`可配置的 文件名乱序(shuffling)
`可配置的 最大训练迭代数(epoch limit)
`文件名队列
`针对输入文件格式的阅读器
`纪录解析器
`可配置的预处理器
`样本队列

这里介绍使用tensorflow的二进制格式来处理,一是因为这个二进制文件操作方便,而且网上有比较通用的处理流程,2是利用图片生成方便,200M的二进制文件可以很快速的生成,但是如果是csv文件的话,生成速度特别慢,而且200M的excel也打不开的。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值