【问题标题】:Efficient way to iterate over tf.data.Dataset迭代 tf.data.Dataset 的有效方法
【发布时间】:2021-08-01 17:22:57
【问题描述】:

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

我使用的是典型的:

for example in dataset:
    code

但是,我已经测量了挂墙时间,并且由于我的数据集很大,因此计算循环需要太多时间。是否有任何其他选项可以减少计算时间?

【问题讨论】:

    标签: python tensorflow tensorflow2.0 tensorflow-datasets


    【解决方案1】:

    您可以使用.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 ]
    

    【讨论】:

      猜你喜欢
      • 2019-03-26
      • 2019-10-17
      • 1970-01-01
      • 2021-02-18
      • 2021-03-07
      • 2012-04-11
      • 2023-03-22
      • 2012-02-03
      • 2017-05-08
      相关资源
      最近更新 更多