TensorFlow学习笔记05

数据集Dataset

TensorFlow提供一套高层的数据处理框架,将每一个数据来源抽象成一个“数据集”,开发者可以以数据集为基本对象,方便进行batching、shuffle等操作。
数据集读取数据基本步骤:

  1. 定义数据集构造方法:不同数据来源调用不同构造方法(张量——tf.data.Dataset.from_tensor_slices()、文本文件——tf.data.TextLineDataset()、TFRecord——tf.data.TFRecordDataset())
  2. 定义遍历器:主要方式有两种,make_one_shot_iterator()、make_initializable_iterator(),第二种更加灵活,对应placeholder使用,后面的代码会详细标明如何搭配使用
  3. 使用get_next()方法从迭代器中读取数据张量,作为计算图其他部分的输入

具体实例:

import tensorflow as tf

input_files = tf.placeholder(tf.string)
dataset = tf.data.TFRecordDataset(input_files)

iterator = dataset.make_initializable_iterator()

x = iterator.get_next()

with tf.Session() as sess:
    sess.run(iterator.initializer,
             feed_dict={
                 input_files: ["", ""]
             })
    # 遍历结束时抛出OutofRange异常以结束程序
    while True:
        try:
            sess.run(x)
        except tf.errors.OutOfRangeError:
            break

数据集中更高层的操作:
dataset = dataset.shuffle(buffer_size)
随机打乱顺序
buffer_size限制buffer缓冲区中的最少元素个数,缓冲区的大小越大,随机的性能越好,但占用的内存越多。

dataset = dataset.batch(batch_size)
batch_size代表要输出的每个batch的数据条数

若每个数据为image、label两个张量(即iterator.get_next()的一个返回值),其中image:[300, 300],label:[],batch_size=128,则经过batch操作后数据集的每个输出为:[128, 300, 300], [128]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值