TensorFlow的数据读取方法

Tensorflow一共提供了3种读取数据的方法:
第一种方法个人感觉比较麻烦:在TensorFlow程序运行的每一步, 让Python代码来供给数据,比如说用PIL和numpy处理数据,然后输入给神经网络。
第二种方法:从文件读取数据,在TensorFlow图的起始, 让一个输入管线从文件中读取数据:string_input_producer()和slice_input_producer()。

他们两者区别可以简单理解为:string_input_producer每次取出一个文件名。slice_input_producer可以既可以同时放出文件名和它对应的label,也可以只放出一个文件名。而在实际应用代码的时候也只是读取文件的方式不一样,其他大致相同。

string_input_producer加载数据的方法:

reader = tf.FixedLengthReader(record_bytes=record_bytes)

key,value = reader.read(filename_queue),其中key是文件名,value是byte类型的文件流二进制,一般需要解码(decode)一下才能变成数组,然后进行reshape操作。

path_queue是文件队列,文件队列的生成的方法:

filenames = [os.path.join(data_dir, ‘data_32_QP%d.dat‘ % i) for i in range(1,4)] ##data_dir是数据的路径,data_32_QP%d.dat是数据文件

for f in filenames:

  if not gfile.Exists(f):  ## 判断目录或文件是否存在,filename可为目录路径或带文件名的路径,有该目录则返回True,否则False。

    raise ValueError(‘Failed to find file:‘  + f )

filename_queue = tf.train.string_input_producer(filenames)  ##输出一个带有字符串的队列

reader = tf.FixedLengthReader(record_bytes=record_bytes)  ##record_bytes 是读取的字符长度,优点是每次读取后,下次读取是接着此处读取,不会重新从文件头开始读取

key,value = reader.read(filename_queue)   ## 数据读取之后需要 处理一下:record_bytes = tf.decode_raw(value, tf.uint8)

record_bytes = tf.decode_raw(value, tf.uint8)  ## 这个函数主要用于数据类型的转变,不会改变原始数据的值还有形状的

slice_input_producer加载图片的reader使用tf.read_file(filename)直接读取。记得图片需要解码和resize成数组,才可以放入内存队列file_queue中等待调用。

原文地址:https://www.cnblogs.com/Mydream6/p/11333952.html

时间: 2024-11-06 07:35:56

TensorFlow的数据读取方法的相关文章

『TensorFlow』数据读取类_data.Dataset

一.资料 参考原文: TensorFlow全新的数据读取方式:Dataset API入门教程 API接口简介: TensorFlow的数据集 二.背景 注意,在TensorFlow 1.3中,Dataset API是放在contrib包中的: tf.contrib.data.Dataset 而在TensorFlow 1.4中,Dataset API已经从contrib包中移除,变成了核心API的一员: tf.data.Dataset 此前,在TensorFlow中读取数据一般有两种方法: 使用p

TensorFlow中数据读取之tfrecords

关于Tensorflow读取数据,官网给出了三种方法: 供给数据(Feeding): 在TensorFlow程序运行的每一步, 让Python代码来供给数据. 从文件读取数据: 在TensorFlow图的起始, 让一个输入管线从文件中读取数据. 预加载数据: 在TensorFlow图中定义常量或变量来保存所有数据(仅适用于数据量比较小的情况). 对于数据量较小而言,可能一般选择直接将数据加载进内存,然后再分batch输入网络进行训练(tip:使用这种方法时,结合yield 使用更为简洁,大家自己

TensorFlow的数据读取机制

一.tensorflow读取机制图解 首先需要思考的一个问题是,什么是数据读取?以图像数据为例,读取的过程可以用下图来表示 假设我们的硬盘中有一个图片数据集0001.jpg,0002.jpg,0003.jpg……我们只需要把它们读取到内存中,然后提供给GPU或是CPU进行计算就可以了.这听起来很容易,但事实远没有那么简单.事实上,我们必须要把数据先读入后才能进行计算,假设读入用时0.1s,计算用时0.9s,那么就意味着每过1s,GPU都会有0.1s无事可做,这就大大降低了运算的效率. 如何解决这

关于tensorflow 的数据读取线程管理QueueRunner

TensorFlow的Session对象是可以支持多线程的,因此多个线程可以很方便地使用同一个会话(Session)并且并行地执行操作.然而,在Python程序实现这样的并行运算却并不容易.所有线程都必须能被同步终止,异常必须能被正确捕获并报告,回话终止的时候, 队列必须能被正确地关闭. 所幸TensorFlow提供了两个类来帮助多线程的实现:tf.Coordinator和 tf.QueueRunner.从设计上这两个类必须被一起使用.Coordinator类可以用来同时停止多个工作线程并且向那

自己封装的Java excel数据读取方法

package org.webdriver.autotest.data; import jxl.Workbook; import jxl.Sheet; import jxl.Cell; import java.util.ArrayList; import java.util.List; import java.io.File; import java.util.HashMap; public class read_case_data { static String sourcefile="..\

10 张图帮你搞定 TensorFlow 数据读取机制

导读 在学习tensorflow的过程中,有很多小伙伴反映读取数据这一块很难理解.确实这一块官方的教程比较简略,网上也找不到什么合适的学习材料.今天这篇文章就以图片的形式,用最简单的语言,为大家详细解释一下tensorflow的数据读取机制,文章的最后还会给出实战代码以供参考. 一.tensorflow读取机制图解 首先需要思考的一个问题是,什么是数据读取?以图像数据为例,读取数据的过程可以用下图来表示: 假设我们的硬盘中有一个图片数据集0001.jpg,0002.jpg,0003.jpg--我

十图详解TensorFlow数据读取机制(附代码)

http://geek.csdn.net/news/detail/201552 在学习TensorFlow的过程中,有很多小伙伴反映读取数据这一块很难理解.确实这一块官方的教程比较简略,网上也找不到什么合适的学习材料.今天这篇文章就以图片的形式,用最简单的语言,为大家详细解释一下TensorFlow的数据读取机制,文章的最后还会给出实战代码以供参考. TensorFlow读取机制图解 首先需要思考的一个问题是,什么是数据读取?以图像数据为例,读取数据的过程可以用下图来表示: 假设我们的硬盘中有一

数据分析(3) Pandas数据读取

通过Pandas提供的read_xxx相关的函数可以读取文件中的数据,并形成DataFrame,常用的数据读取方法为:read_csv( )和read_excel( ),主要可以读取文本类型的数据. 1 读取格式 pd.read_csv ( filepath, encoding, sep, header, names, usecols, index_col, skiprows, nrows……) (1)filepath:文件存储路径,可以用r' '进行非转义限定,路径最好是纯英文(文件名也是),

TensorFlow高效读取数据的方法——TFRecord的学习

关于TensorFlow读取数据,官网给出了三种方法: 供给数据(Feeding):在TensorFlow程序运行的每一步,让python代码来供给数据. 从文件读取数据:在TensorFlow图的起始,让一个输入管线从文件中读取数据. 预加载数据:在TensorFlow图中定义常量或变量来保存所有数据(仅适用于数据量比较小的情况). 对于数据量较小而言,可能一般选择直接将数据加载进内存,然后再分batch输入网络进行训练(tip:使用这种方法时,结合yeild 使用更为简洁).但是如果数据量较