Matlab での畳み込みは、Numpy での畳み込みの 2 倍の速さのようです。
Python コード (私のマシンでは 19 秒かかります):
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"
Matlab コード (私のマシンでは 8.7 秒かかります):
img = ones(512,512,512);
kernel = ones(5,5,5) / 125;
tic
convn(img, kernel, 'same');
toc
2 つの結果は同じです。
Numpy を改善して Matlab のパフォーマンスに匹敵する、または上回る方法はありますか?
興味深いことに、ランタイムにおけるこの係数または ~2 の差は、多くの入力サイズで一貫しています。