ठीक है, तो मेरे पास सिम्पी ऑब्जेक्ट्स (एक्सप्रेशन) के कई, बहु-आयामी numpy arrays हैं। उदाहरण के लिए:मैं sypy के साथ अच्छी तरह से खेलने के लिए numpy.einsum कैसे मिलता है?
A = array([[1.0*cos(z0)**2 + 1.0, 1.0*cos(z0)],
[1.0*cos(z0), 1.00000000000000]], dtype=object)
और इसी तरह।
मैं जो करना चाहता हूं वह इन्सम का उपयोग करके इनमें से कई सरणी गुणा करता है, क्योंकि मेरे पास पहले से ही एक संख्यात्मक गणना से सिंटैक्स है जो मैं पहले कर रहा था। समस्या यह है, जब मैं की तरह
einsum('ik,jkim,j', A, B, C)
मैं एक प्रकार त्रुटि मिलती है कुछ करने के लिए प्रयास करें:
TypeError: invalid data type for einsum
ज़रूर, तो गूगल पर एक त्वरित खोज मुझे einsum शायद पता चलता ऐसा नहीं कर सकते, लेकिन क्यों कोई कारण नहीं है। विशेष रूप से, उन सरणी पर numpy.dot() और numpy.tensordot() फ़ंक्शंस को कॉल करना एक आकर्षण की तरह काम करता है। मैं कर सकता हूं जो मुझे चाहिए, करने के लिए tensordot का उपयोग करें, लेकिन जब मुझे लगता है कि मेरे ऊपर दिमाग में पचास या इतने ईस्टेन सारांशों को बदलने के बारे में लगता है (जहां indeces का क्रम बहुत महत्वपूर्ण है) नेस्टेड tensordot कॉल के साथ। यहां तक कि और भी दुःस्वप्न उस कोड को डीबग करने और उस गलत स्थान इंडेक्स स्वैप के लिए शिकार करने के बावजूद है।
लंबी कहानी छोटी, क्या किसी को पता है कि टेंसडॉट ऑब्जेक्ट्स के साथ क्यों काम करता है लेकिन ईन्सम नहीं होगा? कामकाज की ओर कोई सुझाव? यदि नहीं, तो कोई सुझाव है कि मैं अपने स्वयं के रैपर को नेस्टेड टेन्सॉर्डॉट कॉल पर लिखने के बारे में कैसे कहूंगा जो कि कुछ हद तक इन्सुम नोटेशन के समान है (अक्षरों की बजाय संख्याएं ठीक हैं)?
ईन्सम के पास डॉट या टेंसॉर्डॉट के साथ कुछ भी नहीं है, यह पूरी तरह से बिल्कुल अलग है। आप हाथ से ईन्सम तर्क कर सकते हैं, यदि संभव हो तो किसी अन्य प्रकार पर डालें या ऑब्जेक्ट प्रकारों के लिए इन्सुम लागू करें। वास्तव में 'object_einsum' को कार्यान्वित करना बहुत मुश्किल नहीं होना चाहिए ... – seberg
@seberg,' पूरी तरह से अलग 'द्वारा आप कार्यान्वयन का संदर्भ देते हैं, न कि गणितीय विचारों, सही? क्या कोई कारण है कि वे अलग-अलग लागू किए गए हैं? उदाहरण के लिए मैं 'tensordot' के संदर्भ में 'einsum' लागू किया जा रहा हूं, लेकिन शायद मुझे कुछ याद आ रहा है। – Krastanov