Tensorflow 我可以使用GPU在tf.Dataset上使用高斯模糊进行数据增强吗?

Tensorflow 我可以使用GPU在tf.Dataset上使用高斯模糊进行数据增强吗?,tensorflow,tensorflow-datasets,gaussianblur,Tensorflow,Tensorflow Datasets,Gaussianblur,出于性能考虑,我想将旧的基于队列的管道更改为tensorflow上的新dataset API。然而,一旦我的代码更改,它将在8小时内运行,而不是2小时 我的GPU使用率约为30/40%,现在在0-6%之间 我发现这条线让它变得如此缓慢,这是当我在数据集上应用高斯模糊时: def gaussian_blur(imgs,lbls): imgs = tf.nn.conv2d(imgs,k_conv, strides=[1, 1

出于性能考虑,我想将旧的基于队列的管道更改为tensorflow上的新dataset API。然而,一旦我的代码更改,它将在8小时内运行,而不是2小时

我的GPU使用率约为30/40%,现在在0-6%之间

我发现这条线让它变得如此缓慢,这是当我在数据集上应用高斯模糊时:

def gaussian_blur(imgs,lbls):
   imgs = tf.nn.conv2d(imgs,k_conv,
                                   strides=[1, 1, 1, 1], 
                                   padding='SAME',
                                   data_format='NHWC'
                                   )
   return imgs, lbls

ds = ds.map(gaussian_blur)
对于我以前使用的基于队列的管道,这一行几乎不会减慢我的程序

我认为这是因为这一行过去是在GPU上运行的,但新的dataset API迫使它在CPU上运行,CPU速度要慢得多,而且已经100%使用了


你知道如何在不降低性能的情况下应用高斯模糊吗?我应该保留旧的基于队列的管道吗?

您可以将操作移到您的模型中吗?现在,当您生成数据时,您似乎正在执行此操作,这将在cpu上进行,以便与培训并行进行。谢谢!这是我在GPU上计算它的唯一方法。不幸的是,这真的很不方便,我最终放弃了应用高斯模糊。你能把操作移到你的模型上吗?现在,当您生成数据时,您似乎正在执行此操作,这将在cpu上进行,以便与培训并行进行。谢谢!这是我在GPU上计算它的唯一方法。不幸的是,这真的不方便,我最终放弃了应用高斯模糊。