python - 迭代 tf.data.Dataset 的有效方法

标签 python tensorflow tensorflow2.0 tensorflow-datasets

我想知道在 TensorFlow 2.4 中迭代 tf.data.Dataset 的最有效方法是什么。
我正在使用典型的:

for example in dataset:
    code
但是,我测量了挂墙时间,由于我的数据集很大,计算循环需要太多时间。有没有其他选择可以减少计算时间?

最佳答案

您可以使用 .map(map_func)函数,这是对数据集中的每个样本应用一些预处理的有效方法。它运行 map_func并行处理数据集的每个样本。您甚至可以通过 num_parallel_calls 设置并行调用的数量争论。 [Reference]
这是来自 tensorflow 网站的示例:

dataset = tf.data.Dataset.range(1, 6)  # ==> [ 1, 2, 3, 4, 5 ]
dataset = dataset.map(lambda x: x + 1) # instead of adding 1 to each sample in a for loop
list(dataset.as_numpy_iterator())      # ==> [ 2, 3, 4, 5, 6 ]
你也可以传递一个函数:
def my_map(x): # if dataset has y, it should be like "def my_map(x,y)" and "return x,y"
  return x+1  
                                                  
dataset = tf.data.Dataset.range(1, 6)  # ==> [ 1, 2, 3, 4, 5 ]
dataset = dataset.map(my_map)          # instead of adding 1 to each sample in a for loop
list(dataset.as_numpy_iterator())      # ==> [ 2, 3, 4, 5, 6 ]

关于python - 迭代 tf.data.Dataset 的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68612779/

相关文章:

python - Docker 安装了 python 3.5.2 而不是 python 3.6

python - Django Redis 设置最大连接数

tensorflow - py_func 仅用于 CPU 操作?

python - Tensorflow中 `tf.function`和 `autograph.to_graph`是什么关系?

tensorflow - Tensorflow 2.0 如何连接远程集群?

python - 将日期时间列更改为无循环的整数

python - 播放音频时,最后一部分被切断。如何解决这个问题? (不和谐.py)

python - 无法将 TensorFlow (Keras) 模型转换为 ONNX

tensorflow - Keras 中 Adam 优化器的指数衰减学习率参数

python - 如何循环遍历 (none, 256) 形状张量数组?