एक ईन्सम अभिव्यक्ति के लिए न्यूनतम लागत संकुचन आदेश प्राप्त करने के लिए, पायथन में numpy.einsum+path() विधि का उपयोग करें। पहला पैरामीटर, सबस्क्रिप्ट सारांश के लिए सबस्क्रिप्ट निर्दिष्ट करता है। दूसरा पैरामीटर, ऑपरेंड ऑपरेशन के लिए सरणियाँ हैं।
आइंस्टीन के योग सम्मेलन का उपयोग करते हुए, कई सामान्य बहु-आयामी, रैखिक बीजीय सरणी संचालन को एक साधारण फैशन में दर्शाया जा सकता है। निहित मोड में einsum इन मानों की गणना करता है।
स्पष्ट मोड में, einsum अन्य सरणी संचालनों की गणना करने के लिए और अधिक लचीलापन प्रदान करता है जिन्हें शास्त्रीय आइंस्टीन योग संचालन नहीं माना जा सकता है, अक्षम करके, या संक्षेप में निर्दिष्ट सबस्क्रिप्ट लेबल को मजबूर करके।
परिणामी पथ इंगित करता है कि इनपुट संकुचन की किन शर्तों को पहले अनुबंधित किया जाना चाहिए, इस संकुचन के परिणाम को फिर संकुचन सूची के अंत में जोड़ा जाता है। इस सूची को तब तक दोहराया जा सकता है जब तक कि सभी मध्यवर्ती संकुचन पूर्ण नहीं हो जाते।
कदम
सबसे पहले, आवश्यक पुस्तकालयों को आयात करें -
import numpy as np
टेंसर -
p = np.random.rand(2, 2) q = np.random.rand(2, 5) r = np.random.rand(5, 2)
एक इन्सम व्यंजक के लिए न्यूनतम लागत संकुचन आदेश प्राप्त करने के लिए, numpy.einsum+path()विधि का उपयोग करें -
path_info = np.einsum_path('ij,jk,kl->il', p, q, r, optimize='greedy')
पथ जानकारी प्रदर्शित करना -
print(path_info[0]) print(path_info[1])
उदाहरण
import numpy as np np.random.seed(123) # Tensors p = np.random.rand(2, 2) q = np.random.rand(2, 5) r = np.random.rand(5, 2) # To get the lowest cost contraction order for an einsum expression, use the numpy.einsum+path() method in Python path_info = np.einsum_path('ij,jk,kl->il', p, q, r, optimize='greedy') # Displaying Path info print(path_info[0]) print(path_info[1])
आउटपुट
['einsum_path', (1, 2), (0, 1)] Complete contraction: ij,jk,kl->il Naive scaling: 4 Optimized scaling: 3 Naive FLOP count: 1.200e+02 Optimized FLOP count: 5.700e+01 Theoretical speedup: 2.105 Largest intermediate: 4.000e+00 elements -------------------------------------------------------------------------- scaling current remaining -------------------------------------------------------------------------- 3 kl,jk->jl ij,jl->il 3 jl,ij->il il->il