出于性能原因,我想将我基于旧队列的管道更改为基于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%使用了。
您对如何在不降低性能的情况下应用高斯模糊有任何想法吗?我应该保留基于旧队列的管道吗?