作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用cache
的dataset
转换。这是我当前的代码(简体):
dataset = tf.data.TFRecordDataset(filenames, num_parallel_reads=1)
dataset = dataset.apply(tf.contrib.data.shuffle_and_repeat(buffer_size=5000, count=1))
dataset = dataset.map(_parser_a, num_parallel_calls=12)
dataset = dataset.padded_batch(
20,
padded_shapes=padded_shapes,
padding_values=padding_values
)
dataset = dataset.prefetch(buffer_size=1)
dataset = dataset.cache()
dataset.cache().take(k).repeat()
的序列。
dataset.take(k).cache().repeat()
)
dataset.cache()
以避免错误?
最佳答案
Dataset.cache()
转换的实现非常简单:在您第一次遍历并完全迭代时,它会构建一个通过它的元素列表,并且在后续尝试对其进行迭代时会从该列表返回元素。如果第一遍仅对数据执行部分遍历,则列表不完整,并且TensorFlow不会尝试使用缓存的数据,因为它不知道是否需要其余元素,通常可能需要重新处理所有前面的元素以计算其余元素。
通过修改程序以使用整个数据集,并对其进行迭代直到引发tf.errors.OutOfRangeError
,缓存将具有数据集中元素的完整列表,并将在所有后续迭代中使用。
关于tensorflow - 如何在第一个时期正确缓存数据(Tensorflow,数据集)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50519343/
我是一名优秀的程序员,十分优秀!