انكماش الموتر وفقا لاتفاقية الجمع لأينشتاين.
ينفذ تقلص وتخفيض Tensor المعمم. يجب أن يكون لكل موتر إدخال رمز إدخال منخفض يظهر في الجانب الأيسر من المعادلة مفصول بفواصل. يتكون الجانب الأيمن من المعادلة من الناتج المنخفض. يجب أن تتكون اشتراكات الإدخال والمنخفض الناتج من صفر أو أكثر من تسميات المحاور المسماة وعلامة حذف واحدة على الأكثر (`...`).
قد تكون تسميات المحاور المسماة أي حرف منفرد بخلاف تلك التي لها معنى خاص، وهي `,.->`. سلوك هذه العملية غير محدد إذا تلقت معادلة منسقة بشكل غير صحيح؛ نظرًا لأن التحقق يتم في وقت إنشاء الرسم البياني، فإننا نحذف عمليات التحقق من صحة التنسيق في وقت التشغيل.
ملاحظة: ليس المقصود من هذه العملية أن يتم استدعاؤها من قبل المستخدم؛ بدلاً من ذلك يجب على المستخدمين الاتصال بـ tf.einsum
مباشرة. إنها عملية مخفية يستخدمها tf.einsum
.
يتم تطبيق العمليات على المدخلات (المدخلات) وفقًا للقواعد التالية:
(أ) القطرات المعممة: بالنسبة لأبعاد الإدخال المقابلة لتسميات المحاور التي تظهر أكثر من مرة في نفس خط الإدخال المنخفض، فإننا نأخذ القطر المعمم ('k`-الأبعاد). على سبيل المثال، في المعادلة `iii->i` ذات شكل الإدخال `[3, 3, 3]`، سيتكون القطر المعمم من `3` عناصر في المؤشرات `(0, 0, 0)`، `(1) , 1, 1)` و `(2, 2, 2)` لإنشاء موتر الشكل `[3]`.
(ب) التخفيض: يتم جمع المحاور المقابلة للتسميات التي تظهر فقط في منخفض إدخال واحد ولكن ليس في منخفض الإخراج قبل تقلص Tensor. على سبيل المثال، في المعادلة `ab,bc->b`، تسميات المحاور `a` و`c` هي تسميات محور الاختزال.
(ج) أبعاد الدُفعة: تشكل المحاور المقابلة للتسميات التي تظهر في كل من اشتراكات الإدخال وأيضًا في منخفض الإخراج أبعاد الدُفعة في تقلص Tensor. تسميات المحاور غير المسماة المطابقة لعلامة الحذف (`...`) تتوافق أيضًا مع أبعاد الدُفعة. على سبيل المثال، بالنسبة للمعادلة التي تشير إلى ضرب مصفوفة الدُفعات، `bij,bjk->bik`، فإن تسمية المحور `b` تتوافق مع بُعد الدُفعة.
(د) الانكماش: في حالة العين الثنائية، يتم تقليص المحاور المقابلة للتسميات التي تظهر في مدخلين مختلفين (وليس في المخرجات) مقابل بعضها البعض. وبالنظر إلى معادلة ضرب المصفوفة الدفعية مرة أخرى (`bij,bjk->bik`)، فإن تسمية المحور المتقلص هي `j`.
(هـ) توسيع قطري: إذا كانت اشتراكات الإخراج تحتوي على تسميات محاور متكررة (صريحة)، فسيتم تطبيق العملية المعاكسة لـ (أ). على سبيل المثال، في المعادلة `i->iii` وشكل الإدخال `[3]`، فإن مخرجات الشكل `[3, 3, 3]` كلها أصفار، باستثناء القطر (المعمم) الذي يتم ملؤه بـ القيم من المدخلات ملاحظة: هذه العملية غير مدعومة بواسطة `np.einsum` أو tf.einsum
؛ يتم توفيره لتمكين حساب التدرج الرمزي لـ tf.einsum
.
يجب أن تحتوي اشتراكات الإخراج على تسميات تظهر في واحد على الأقل من اشتراكات الإدخال فقط. علاوة على ذلك، يجب أن تكون جميع الأبعاد المعينة لنفس المحور متساوية.
قد يحتوي أي من اشتراكات الإدخال والإخراج على علامة حذف واحدة (`...`) على الأكثر. يتم تعيين علامات الحذف هذه مقابل أبعاد لا تتوافق مع أي تسمية محور مسمى. إذا كان هناك مدخلان يحتويان على علامات الحذف، فسيتم بثهما وفقًا لـ [قواعد] البث NumPy القياسية (http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html).
يتم وضع الأبعاد التي يتم بثها في الموقع المقابل لعلامة القطع في خط الإخراج. إذا كانت الأبعاد التي تم بثها غير فارغة وكانت اشتراكات الإخراج لا تحتوي على علامات الحذف، فسيتم ظهور خطأ InvalidArgument.
الثوابت
خيط | OP_NAME | اسم هذه العملية كما هو معروف بواسطة محرك TensorFlow الأساسي |
الأساليب العامة
الإخراج <T> | كإخراج () إرجاع المقبض الرمزي للموتر. |
ثابت <T يمتد TType > Einsum <T> | إنشاء ( نطاق النطاق ، مدخلات Iterable < Operand <T>>، معادلة السلسلة) طريقة المصنع لإنشاء فئة تغلف عملية Einsum جديدة. |
الإخراج <T> | انتاج () موتر الإخراج بالشكل حسب "المعادلة". |
الطرق الموروثة
الثوابت
السلسلة النهائية الثابتة العامة OP_NAME
اسم هذه العملية كما هو معروف بواسطة محرك TensorFlow الأساسي
الأساليب العامة
الإخراج العام <T> كإخراج ()
إرجاع المقبض الرمزي للموتر.
المدخلات إلى عمليات TensorFlow هي مخرجات عملية TensorFlow أخرى. يتم استخدام هذه الطريقة للحصول على مقبض رمزي يمثل حساب الإدخال.
إنشاء Einsum <T> ثابت عام ( نطاق النطاق ، مدخلات Iterable < Operand <T>>، معادلة السلسلة)
طريقة المصنع لإنشاء فئة تغلف عملية Einsum جديدة.
حدود
نِطَاق | النطاق الحالي |
---|---|
المدخلات | قائمة 1 أو 2 الموترات. |
معادلة | سلسلة تصف عملية جمع آينشتاين؛ بتنسيق np.einsum. |
عائدات
- مثيل جديد من Einsum