我的代码使用了相对广泛的扩充策略,但我注意到当fit_generator(… workers = N)中的N增加时,cpu利用率不成比例.我有一个4核cpu.
>当N = 1时,htop显示约105%的使用率
>当N = 2时,htop显示约202%的使用率
>当N = 3时,htop显示约287%的使用率
>当N = 4时,htop显示大约342%的使用率
GPU使用率始终低于40%.
如果我减少增强策略以省略噪声添加,当N = 4时,我可以实现大约360%和更高的GPU使用率.增加噪音
x = numpy.random.normal(0,noise_sigma,x.shape)/ 255.0
其中x是640×480 BGR输入图像.这是一个慢速呼叫,每次呼叫平均大约24.3ms,但是当N = 4时cpu不应该仍然工作吗? numpy如何在生成大量随机数时阻塞其他线程?
最佳答案
普通电话cont2_array *
https://github.com/numpy/numpy/blob/master/numpy/random/mtrand/mtrand.pyx#L1651
还有锁
这是什么原因?
r = numpy.random.RandomState()
.....
for ... :
x += r.normal(0,x.shape) / 255.0