tensorflow Dataset及TFRecord一些要点持续更新
Posted zhouxiaosong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tensorflow Dataset及TFRecord一些要点持续更新相关的知识,希望对你有一定的参考价值。
关于tensorflow结合Dataset与TFRecord这方面看到挺好一篇文章:
https://cloud.tencent.com/developer/article/1088751
github:
dataset要点:
一般先shuffle,然后batch,再repeat
当然可以先repeat再batch,这样做与前面一个的区别就是最后一个batch是会有一部分之前batch里出现过的数据,在测试集上这么做要谨慎。
dataset的one_shot_iterator和make_initializable_iterator
看到stackoverflow上有个问题:
其实我觉得题主想问的不是答主说的意思,实际上one-shot迭代器只能迭代一轮,initializable迭代器可以迭代多轮(通过sess.run(iterator.initializer)来实现。那么这两种迭代器的区别就非常明显了,换句话说,题主的第二个代码片段,除了第0个epoch之外,剩下的所有epoch都没有数据,会报错。
可以看下面这段代码来测试:
import tensorflow as tf import numpy as np dataset = tf.data.Dataset.from_tensor_slices(np.random.uniform(size=(5, 2))).shuffle(100).batch(2) iterator = dataset.make_initializable_iterator() # iterator = dataset.make_one_shot_iterator() one_element = iterator.get_next() with tf.Session() as sess: for i in range(5): sess.run(iterator.initializer) while True: try: print(sess.run(one_element)) except tf.errors.OutOfRangeError: print("Epoch %s is done." % i) break
以上是关于tensorflow Dataset及TFRecord一些要点持续更新的主要内容,如果未能解决你的问题,请参考以下文章
『TensorFlow』数据读取类_data.Dataset
tensorflow dataset.shuffle dataset.batch dataset.repeat 理解 注意点
tensorflow的keras实现搭配dataset 之一
在tensorflow中使用`dataset.map()`访问张量numpy数组