इस प्रोजेक्ट के बारे में

einops एक ओपन-सोर्स Python लाइब्रेरी है जो आइंस्टीन-प्रेरित नोटेशन के माध्यम से लचीले और शक्तिशाली टेंसर ऑपरेशन प्रदान करती है, जिसे टेंसर मैनिपुलेशन कोड को अधिक पठनीय और विश्वसनीय बनाने के लिए डिज़ाइन किया गया है। नाम का अर्थ है आइंस्टीन-प्रेरित नोटेशन फॉर ऑपरेशंस, जो numpy.einsum से ढीला प्रेरणा लेता है। कोर API न्यूनतम लेकिन शक्तिशाली है, जो तीन मुख्य फ़ंक्शनों पर आधारित है: rearrange (पैटर्न के अनुसार तत्वों को पुनर्व्यवस्थित करना), reduce (rearrangement को mean या max जैसे reduction के साथ जोड़ना), और repeat (नए अक्ष के साथ कॉपी करना)। बाद में जोड़े गए pack और unpack विभिन्न आयामों के कई टेंसरों को प्रतिवर्ती रूप से संयोजित करने के लिए हैं, और einsum बहु-अक्षर वाले अक्ष नामों के समर्थन के साथ। Einops में EinMix लेयर भी शामिल है, जो MLP Mixers और समान आर्किटेक्चर के लिए उपयुक्त एक सामान्य रैखिक लेयर है, साथ ही PyTorch, TensorFlow, Flax, और Paddle के लिए फ्रेमवर्क-विशिष्ट लेयर रैपर (Rearrange, Reduce, आदि) भी शामिल हैं। नोटेशन शब्दार्थ जानकारी पर जोर देता है: x.view(x.shape[0], -1) लिखने के बजाय, उपयोगकर्ता rearrange(x, 'b c h w -> b (c h w)') लिखते हैं, जो इनपुट और आउटपुट दोनों आकृतियों का दस्तावेजीकरण करता है। नामित अक्ष जैसे 'time c h w -> time (c h w)' संकेत देते हैं कि डेटा एक स्वतंत्र बैच के बजाय एक वीडियो अनुक्रम है। उपयोगकर्ता विशिष्ट आयामों को भी पिन कर सकते हैं (जैसे c=256, h=19, w=19) ताकि ऑपरेशन टिप्पणियों पर निर्भर रहने के बजाय रनटाइम पर आकृतियों को मान्य करे। परिणाम सख्ती से निर्धारित होते हैं, इसलिए depth-to-space जैसे अस्पष्ट ऑपरेशन को स्पष्ट रूप से लिखा जा सकता है। वही सिंटैक्स 1D, 2D, और 3D पूलिंग में समान रूप से काम करता है, और व्यवहार फ्रेमवर्क में सुसंगत है, भले ही मूल API भिन्न हों (उदाहरण के लिए, flatten सेमेंटिक्स NumPy/PyTorch और TensorFlow/Keras के बीच भिन्न हैं)। Einops NumPy, PyTorch, TensorFlow, JAX, CuPy, Flax, Paddle, OneFlow, tinygrad, और PyTensor का समर्थन करता है, और Python array API मानक लागू करने वाले किसी भी फ्रेमवर्क के साथ काम करता है, जिसमें NumPy >= 2.0, MLX, pydata/sparse, cubed, और nndonnx शामिल हैं। यह PyTorch लेयर के लिए torch.compile और torch.jit.script का समर्थन करता है। लाइब्रेरी को Python 3.10 या बाद के संस्करण की आवश्यकता होती है और इसे pip install einops के माध्यम से स्थापित किया जाता है। परियोजना को ICLR 2022 में मौखिक प्रस्तुति के रूप में प्रस्तुत किया गया था और 10,000 से अधिक GitHub परियोजनाओं द्वारा उपयोग किया जाता है।