मैं एक बहुत बड़े स्पैर मैट्रिक्स गुणा (matmul) समस्या के साथ काम कर रहा हूँ। उदाहरण के तौर पर मान लें:त्रिभुज/स्पैस भंडारण के लिए numpy मैट्रिक्स गुणा?
ए एक बाइनरी (75 x 200,000) मैट्रिक्स है। यह स्पैस है, इसलिए मैं स्टोरेज के लिए सीएससी का उपयोग कर रहा हूं।
बी = A.transpose() * एक
उत्पादन आकार 200Kx200K का एक विरल और सममित मैट्रिक्स होने जा रहा है: मैं निम्नलिखित matmul आपरेशन करने की जरूरत है।
दुर्भाग्य से, बी तरह से रैम में स्टोर करने के लिए बड़े (या "कोर में") अपने लैपटॉप पर करने के लिए होने जा रहा है। दूसरी ओर, मैं भाग्यशाली हूं क्योंकि बी के कुछ गुण हैं जो इस समस्या को हल करना चाहिए।
चूंकि बी विकर्ण और स्पैस के साथ सममित होने वाला है, इसलिए मैटुल ऑपरेशन के परिणामों को संग्रहीत करने के लिए मैं त्रिकोणीय मैट्रिक्स (ऊपरी/निचला) का उपयोग कर सकता हूं और एक स्पैर मैट्रिक्स स्टोरेज प्रारूप आकार को और कम कर सकता है।
मेरा प्रश्न है ... समय से पहले, क्या आउटपुट स्टोरेज आवश्यकताएं दिखने जा रही हैं, ताकि मैं numpy का उपयोग करके स्टोरेज समाधान का चयन कर सकूं और "मैट्रिक्स बहुत बड़ा" से बच सकूं। गणना के कई मिनट (घंटे) के बाद रनटाइम त्रुटि?
दूसरे शब्दों में, मैट्रिक्स के लिए भंडारण आवश्यकताओं को अनुमानित गिनती एल्गोरिदम का उपयोग करके दो इनपुट मैट्रिक्स की सामग्री का विश्लेषण करके गुणा किया जा सकता है?
यदि नहीं, तो मैं एक जानवर बल समाधान में देख रहा हूँ। नक्शा/कम करने, आउट-ऑफ-कोर भंडारण, या निम्न वेब लिंक से एक matmul उपखंड समाधान (strassens एल्गोरिथ्म) से जुड़ी कोई भी:
एक जोड़े मानचित्र/कम समस्या उपखंड समाधान
- http://www.norstad.org/matrix-multiply/index.html
- http://bpgergo.blogspot.com/2011/08/matrix-multiplication-in-python.html
एक आउट-ऑफ-कोर (PyTables) भंडारण समाधान
एक matmul उपखंड समाधान:
- https://en.wikipedia.org/wiki/Strassen_algorithm
- http://facultyfp.salisbury.edu/taanastasio/COSC490/Fall03/Lectures/FoxMM/example.pdf
- http://eli.thegreenplace.net/2012/01/16/python-parallelizing-cpu-bound-tasks-with-multiprocessing/
धन्यवाद अग्रिम में कोई सुझाव, टिप्पणियाँ, या मार्गदर्शन के लिए!
के लिए क्षमा याचना:
किसी भी मामले में, निम्नलिखित कोड आप को देखने के लिए कि अनुमान काफी अच्छा है की अनुमति चाहिए विलंब। सहायता के लिए आपका धन्यवाद! मैं चिंतित था "भंडारण आवश्यकताओं" वाक्यांश अस्पष्ट था। आपके द्वारा भेजा गया अनुमान कोड * बिल्कुल * था जिसे मैं सीखने की उम्मीद कर रहा था।क्या आपकी पद्धति कुछ विश्लेषणात्मक संयोजन/एसिम्प्टोटिक्स से प्रेरित है, जो सैडगविक और फ्लोज़लेट काम कर रही थी (अनुमानित गणनाओं के संबंध में)? संदर्भ: https://en.wikipedia.org/wiki/Analytic_combinatorics http://algo.inria.fr/flajolet/Publications/AnaCombi/ https://en.wikipedia.org/wiki/Asymptotic_theory https: //en.wikipedia.org/wiki/Approximate_counting_algorithm –
@ct। दुर्भाग्य से मैं अकादमिक से बहुत दूर एक भूमि में रहता हूं, इसलिए मैंने आपके द्वारा लिंक की गई किसी भी चीज के बारे में कभी नहीं सुना था। मेरी प्रेरणा बस [सीएसआर] का विवरण था (http://en.wikipedia.org/wiki/Sparse_matrix#Compressed_sparse_row_.28CSR_or_CRS.29) और [सीएससी] (http://en.wikipedia.org/wiki/Sparse_matrix # संपीड़ित_sparse_column_.28CSC_or_CCS.29) प्रारूप। – Jaime