Я хотел бы изменить мой старый конвейер на основе очередей на новый API набора данных в тензорном потоке из соображений производительности.Однако, как только мой код изменился, он работает за 8 часов вместо 2.
Использование моего графического процессора составляло около 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%.
Есть ли у вас какие-либо идеи о том, как можноЯ применяю размытие по Гауссу без снижения производительности?Должен ли я сохранить мой старый конвейер на основе очереди?