मैं पाइथन का उपयोग करके रूपांतरण के प्रदर्शन में सुधार करना चाहता हूं, और प्रदर्शन में सुधार के बारे में कुछ बेहतरीन जानकारी के बारे में कुछ अंतर्दृष्टि की उम्मीद कर रहा था।नम्पी प्रदर्शन में सुधार
मैं वर्तमान में scipy उपयोग कर रहा हूँ घुमाव के प्रदर्शन करने के लिए, कुछ हद तक नीचे स्निपेट कैसा कोड का उपयोग:
import numpy
import scipy
import scipy.signal
import timeit
a=numpy.array ([ range(1000000) ])
a.reshape(1000,1000)
filt=numpy.array([ [ 1, 1, 1 ], [1, -8, 1], [1,1,1] ])
def convolve():
global a, filt
scipy.signal.convolve2d (a, filt, mode="same")
t=timeit.Timer("convolve()", "from __main__ import convolve")
print "%.2f sec/pass" % (10 * t.timeit(number=10)/100)
मैं छवि डेटा संसाधित कर रहा हूँ, ग्रेस्केल का उपयोग कर (0 और 255 के बीच पूर्णांक मान), और मैं वर्तमान में मिल एक प्रति सेकंड एक रूपांतरण के बारे में एक चौथाई। मेरी सोच निम्नलिखित में से एक करना था:
कोरपी का प्रयोग करें, अधिमानतः कुछ अनुकूलन आईसीसी & ikml के साथ रिकॉम्पाइल numpy। पायथन-कूडा का प्रयोग करें।
मैं सोच रहा था कि अगर इनमें से किसी भी दृष्टिकोण (किसी प्रकार का लाभ सामान्य होगा, और यदि यह समय के लायक है) के साथ कोई अनुभव था, या अगर किसी को नाम्पी के साथ दृढ़ संकल्प करने के लिए बेहतर लाइब्रेरी के बारे में पता है।
धन्यवाद!
संपादित करें:
स्पीड 10x के बारे में फिर से लेखन अजगर पाश द्वारा सी में Numpy का उपयोग करने पर निर्भर है।
यह इंगित करने के लिए धन्यवाद कि, मैंने यह नहीं सोचा था कि scipy convolve अक्षम हो सकता है। ऐसा लगता है, यद्यपि मैंने उस बारीकी से जांच नहीं की है, वह समझदार दृढ़ संकल्प मेमोरी मैनिपुलेशन ऑपरेशंस का थोड़ा सा कर रहा है और इसमें कई संख्याएं हैं जो चीजों को धीमा कर देती हैं। मैं परिणाम वापस पोस्ट करूंगा, और आपकी टिप्पणियों के लिए सभी को धन्यवाद दूंगा। – Bear
हां, convolve2d काफी अक्षम है, क्योंकि यह सामान्य मामले से संबंधित है (यह मनमानी वस्तुओं से संबंधित है - उदाहरण के लिए, आप दशमलव वस्तुओं की सरणी के साथ घूमने में सक्षम होना चाहिए)। मुझे लगता है कि यह सामान्य मामले के लिए विशेष कोडपैथ का उपयोग करके काफी बढ़ाया जा सकता है (विशेष रूप से ट्रिपल लूप के अंदर फ़ंक्शन पॉइंटर कॉल से बचने के लिए, जो होस्टपॉट में से एक होने की संभावना है। –