出于性能原因,我想将基于队列的旧管道更改为 tensorflow 上的新数据集 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 上运行,但新的数据集 API 强制它在 CPU 上运行,这速度慢得多,并且已经 100% 使用。
您对如何在不降低性能的情况下应用高斯模糊有任何想法吗?我应该保留旧的基于队列的管道吗?