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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TensorFlow是一个开源的机器学习框架,通常用于创建神经网络模型。在训练模型之前,需要准备好数据集,本文将介绍如何使用TensorFlow读取数据TensorFlow提供了多种读取数据方法,其最常用的是使用tf.data模块。首先,我们需要定义一个数据集对象,并通过读取文件的方式将数据加载进来。TensorFlow支持多种文件格式,如csv、txt、json、tfrecord等,可以根据自己的需求选择合适的格式。 加载数据后,我们可以对数据进行一些预处理,比如做数据增强、进行归一化等操作。预处理完数据后,我们需要将数据转化为张量类型,并将其打包成batch。通过这种方式,我们可以在每次训练同时处理多个数据。 随后,我们可以使用tf.data.Dataset的shuffle()函数打乱数据集顺序,防止模型只学习到特定顺序下的模式,然后使用batch()函数将数据划分成批次。最后,我们可以使用repeat()函数让数据集每次可以被使用多次,达到更好的效果。 在TensorFlow,我们可以通过输入函数将数据集传入模型,使模型能够直接从数据读取数据。使用输入函数还有一个好处,即能够在模型训练时动态地修改数据的内容,特别是在使用esimator模块进行模型训练时,输入函数是必须要的。 总结一下,在TensorFlow读取数据的流程如下:定义数据集对象-读取文件-预处理数据-打包数据为batch-打乱数据集-划分批次数据-重复数据集-使用输入函数读取数据。 在实际应用过程,我们还可以通过其他方式来读取数据,如使用numpy、pandas等工具库,也可以自定义数据集类来处理数据。无论使用何种方式,读取数据都是机器学习训练重要的一步,需要仔细处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值