Konwolucji w Matlab wydaje się być dwa razy szybciej niż splot w Numpy.Czy splot jest wolniejszy w Numpy niż w Matlab?
kod Pythona (trwa 19 sekund w moim urządzenia):
import numpy as np
from scipy import ndimage
import time
img = np.ones((512,512,512))
kernel = np.ones((5,5,5))/125
start_time = time.time()
ndimage.convolve(img,kernel,mode='constant')
print "Numpy execution took ", (time.time() - start_time), "seconds"
kod Matlab (trwa 8,7 sekundy w moim urządzenia):
img = ones(512,512,512);
kernel = ones(5,5,5)/125;
tic
convn(img, kernel, 'same');
toc
Oba dają identyczne wyniki.
Czy istnieje sposób na poprawę Numpy, aby dopasować lub pokonać wydajność Matlaba tutaj?
Co ciekawe, ten współczynnik lub ~ 2 różnica w czasie wykonywania jest stała przy wielu wejściach.
To nie jest tak naprawdę wydajność Pythona, o której tu chodzi, ale NumPy/SciPy. Czy możesz poprawić wydajność tych modułów? Oczywiście, ale nie poprzez pisanie kodu Pythona. – kindall
Edytowane (s/Python/Numpy /). – naroom
Możesz sprawdzić, jakie biblioteki buduje numpy w porównaniu z vs matlab. Z własnego doświadczenia wiem, że gdy numpy zostanie zbudowana na bazie biblioteki MKL Intela, uzyskuję znacznie lepszą wydajność w przypadku niektórych operacji niż przy domyślnych ustawieniach. – JoshAdel