Keras использует меньше ресурсов ЦП, когда число рабочих растет, а numpy создает большой массив - PullRequest
0 голосов
/ 06 октября 2018

Мой код использует относительно обширную стратегию дополнения, но я заметил, что загрузка ЦП не пропорциональна, когда N в fit_generator(...workers=N) увеличивается.У меня 4-ядерный процессор.

  • Когда N=1, htop показывает около 105% использования
  • Когда N=2, htop показывает около 202% использования
  • Когда N=3, htop показывает около 287% использования
  • Когда N=4, htop показывает около 342% использования

Использование графического процессора меньшечем 40%.

Если я урежу стратегию дополнения, чтобы исключить добавление шума, я смогу достичь примерно 360% и более высокого использования GPU при N=4.Шум добавляется

x += numpy.random.normal(0, noise_sigma, x.shape) / 255.0

, где x - входное изображение BGR 640x480.Это медленный вызов, в среднем около 24,3 мс на вызов, но разве процессор не должен работать, когда N=4?Почему NumPy блокирует другие потоки, когда генерирует большой массив случайных чисел?

1 Ответ

0 голосов
/ 06 октября 2018

normal звонки cont2_array*

https://github.com/numpy/numpy/blob/master/numpy/random/mtrand/mtrand.pyx#L1651

и есть lock

Это причина?

МожетВы пытаетесь использовать отдельные RandomState для генерации случайных чисел?

r = numpy.random.RandomState() 

.....

for ... :
    x += r.normal(0, noise_sigma, x.shape) / 255.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...