python - tensorflow.dataset.shuffle = tensorflow.dataset.prefetch + 然后在内部洗牌?
问题描述
根据 tf.dataset 的文档。shuffle,它将填充一个具有大小的缓冲区,k
然后在其中随机播放。虽然我不想改变数据的顺序,但我希望它被缓冲。然后我发现有tf.dataset。prefetch,它说“这允许在处理当前元素的同时准备后面的元素。”
从描述中我猜prefetch
是我想要的(即在训练中使用之前的数据时预加载数据),但是在尝试查看代码tf.dataset.shuffle
以查看它们是否实际调用tf.dataset.prefetch
时,我陷入了这些行中(将它们粘贴在下面),找不到shuffle_dataset_v3
定义的位置。
variant_tensor = gen_dataset_ops.shuffle_dataset_v3(
input_dataset._variant_tensor, # pylint: disable=protected-access
buffer_size=self._buffer_size,
seed=self._seed,
seed2=self._seed2,
seed_generator=gen_dataset_ops.dummy_seed_generator(),
reshuffle_each_iteration=self._reshuffle_each_iteration,
**self._flat_structure)
我的主要问题是是否在缓冲数据方面进行prefetch
了替换,shuffle
如果有人能指出我在哪里shuffle_dataset_v3
实施也很好?
解决方案
是的。
Prefetch
用于缓冲数据。gen_dataset_ops
, 和其他gen_xxx_ops
不包含在源代码中,因为它是由 bazel 自动生成的,用于包装 C++ 实现以在 python 中使用。您应该能够gen_xxx_ops
在本地安装中找到这些代码。例如,${PYTHON_ROOT}/site-packages/tensorflow/python/ops/gen_dataset_ops.py
推荐阅读
- javascript - 从 Array 获取信息,然后在 Javascript 中获取 Object
- macos - 以编程方式设置 NSWindow 大小不起作用
- npm - 在内置的自创反应模块中获取重复功能
- javascript - 将数组中的附加值添加到工具提示
- excel - 如何使用 VBA 在 Excel 文件中设置 Sharepoint 文档类型?
- android - 无法使用 Google vision api 扫描条形码
- google-drive-api - 如何使用 wget 下载 Google Drive 文件夹?
- angular - 更新模型后,Angular 单元测试访问由 *ngif 调节的组件的 DOM 元素
- php - Woocommerce:更新所有产品的功能
- java - 选择性地@JsonIgnore Immutables 访问器方法,仅在使用 Jackson 进行序列化或反序列化期间