कोई एवर नहीं; बस एक टिप्पणी:
इससे पहले कि आप प्रदर्शन की तुलना, आप सुनिश्चित दो कार्य एक ही परिणाम लौट रहे हैं बनाने की जरूरत है:
मैटलैब का convn, सप्टक के convn रूप में एक ही परिणाम देता है तो convn
ndimage.convolve
तुलना में अलग है:
octave> convn(ones(3,3), ones(2,2))
ans =
1 2 2 1
2 4 4 2
2 4 4 2
1 2 2 1
In [99]: ndimage.convolve(np.ones((3,3)), np.ones((2,2)))
Out[99]:
array([[ 4., 4., 4.],
[ 4., 4., 4.],
[ 4., 4., 4.]])
ndimage.convolve
अन्य साधनों, 'reflect','constant','nearest','mirror', 'wrap'
, लेकिन इन मैच convn
के डिफ़ॉल्ट ("पूर्ण") व्यवहार से कोई भी नहीं है।
2 डी सरणियों के लिए, scipy.signal.convolve2d
scipy.signal.convolve
से तेज है।
3 डी सरणियों के लिए, scipy.signal.convolve
convn(A,B)
रूप में एक ही व्यवहार करने लगता है:
octave> x = convn(ones(3,3,3), ones(2,2,2))
x =
ans(:,:,1) =
1 2 2 1
2 4 4 2
2 4 4 2
1 2 2 1
ans(:,:,2) =
2 4 4 2
4 8 8 4
4 8 8 4
2 4 4 2
ans(:,:,3) =
2 4 4 2
4 8 8 4
4 8 8 4
2 4 4 2
ans(:,:,4) =
1 2 2 1
2 4 4 2
2 4 4 2
1 2 2 1
In [109]: signal.convolve(np.ones((3,3,3), dtype='uint8'), np.ones((2,2,2), dtype='uint8'))
Out[109]:
array([[[1, 2, 2, 1],
[2, 4, 4, 2],
[2, 4, 4, 2],
[1, 2, 2, 1]],
[[2, 4, 4, 2],
[4, 8, 8, 4],
[4, 8, 8, 4],
[2, 4, 4, 2]],
[[2, 4, 4, 2],
[4, 8, 8, 4],
[4, 8, 8, 4],
[2, 4, 4, 2]],
[[1, 2, 2, 1],
[2, 4, 4, 2],
[2, 4, 4, 2],
[1, 2, 2, 1]]], dtype=uint8)
ध्यान दें कि np.ones((n,m,p))
डिफ़ॉल्ट रूप से एक नाव सरणी पैदा करता है। Matlab ones(n,m,p)
इन्स की एक सरणी बनाने के लिए प्रतीत होता है। अच्छी तुलना करने के लिए, आपको मैटलैब मैट्रिस के प्रकार के लिए numpy arrays के dtype से मिलान करने का प्रयास करना चाहिए।
यह वास्तव में पाइथन का प्रदर्शन नहीं है, आप यहां समय दे रहे हैं, लेकिन न्यूपी/साइपी। क्या आप उन मॉड्यूल के प्रदर्शन में सुधार कर सकते हैं? निश्चित रूप से, लेकिन पायथन कोड लिखकर नहीं। – kindall
संपादित (एस/पायथन/न्यूम्पी /)। – naroom
आप देख सकते हैं कि बनाम matlab के खिलाफ क्या पुस्तकालय numpy बनाया गया है। मुझे व्यक्तिगत अनुभव से पता है कि जब इंटेल की एमकेएल लाइब्रेरी के खिलाफ numpy बनाया गया है, तो मुझे डिफ़ॉल्ट के मुकाबले कुछ परिचालनों के लिए बेहतर प्रदर्शन मिलता है। – JoshAdel