انقباض تانسور طبق قرارداد جمع انیشتین.
انقباض و کاهش تانسور عمومی را اجرا می کند. هر تانسور ورودی باید دارای یک زیرنویس ورودی مربوطه باشد که در سمت چپ معادله جدا شده با کاما ظاهر می شود. سمت راست معادله از زیرنویس خروجی تشکیل شده است. زیرنویسهای ورودی و زیرنویس خروجی باید از برچسبهای محوری با نام صفر یا بیشتر و حداکثر یک بیضی («...») تشکیل شده باشند.
برچسبهای محور نامگذاریشده ممکن است هر کاراکتری به جز نویسههایی باشند که معنای خاصی دارند، یعنی «,.->». اگر معادله ای با فرمت نامناسب دریافت کند، رفتار این عملیات تعریف نشده است. از آنجایی که اعتبار سنجی در زمان ساخت گراف انجام می شود، بررسی های اعتبارسنجی قالب را در زمان اجرا حذف می کنیم.
توجه: این عملیات برای فراخوانی توسط کاربر در نظر گرفته نشده است. در عوض کاربران باید مستقیماً با tf.einsum
تماس بگیرند. این یک Op پنهان است که توسط tf.einsum
استفاده می شود.
عملیات بر روی ورودی(های) طبق قوانین زیر اعمال می شود:
(الف) قطرهای تعمیم یافته: برای ابعاد ورودی متناظر با برچسب های محور که بیش از یک بار در زیرنویس ورودی یکسان ظاهر می شوند، قطر تعمیم یافته (k`- بعدی) را می گیریم. برای مثال، در معادله «iii->i» با شکل ورودی «[3، 3، 3]»، مورب تعمیم یافته از عناصر «3» در شاخصهای «(0، 0، 0)»، «(1) تشکیل شده است. ، 1، 1)" و "(2، 2، 2)" برای ایجاد یک تانسور شکل "[3]".
(ب) کاهش: محورهای مربوط به برچسب هایی که فقط در یک زیرنویس ورودی ظاهر می شوند اما در زیرنویس خروجی ظاهر می شوند، قبل از انقباض تانسور جمع می شوند. برای مثال، در معادله «ab,bc->b»، برچسبهای محور «a» و «c» برچسبهای محور کاهش هستند.
(ج) ابعاد دسته ای: محورهای مربوط به برچسب هایی که در هر یک از زیرنویس های ورودی و همچنین در زیرنویس خروجی ظاهر می شوند، ابعاد دسته ای را در انقباض تانسور تشکیل می دهند. برچسب های محور بدون نام مربوط به بیضی (`...`) نیز با ابعاد دسته ای مطابقت دارند. برای مثال، برای معادله ضرب ماتریس دستهای، «bij,bjk->bik»، برچسب محور «b» مربوط به یک بعد دستهای است.
(د) انقباض: در مورد einsum باینری، محورهای مربوط به برچسبهایی که در دو ورودی مختلف (و نه در خروجی) ظاهر میشوند در برابر یکدیگر منقبض میشوند. با در نظر گرفتن دوباره معادله ضرب ماتریس دسته ای («bij,bjk->bik»)، برچسب محور منقبض شده «j» است.
(ه) Expand Diagonal: اگر زیرنویسهای خروجی حاوی برچسبهای محور مکرر (صریح) باشند، عمل مخالف (a) اعمال میشود. برای مثال، در معادله «i->iii» و شکل ورودی «[3]»، خروجی شکل «[3، 3، 3]» همه صفر هستند، به جز قطر (تعمیمشده) که با آن پر شده است. مقادیر از ورودی توجه: این عملیات توسط «np.einsum» یا tf.einsum
پشتیبانی نمی شود. برای فعال کردن محاسبه گرادیان نمادین tf.einsum
شده است.
زیرنویسهای خروجی باید فقط حاوی برچسبهایی باشند که حداقل در یکی از زیرنویسهای ورودی ظاهر میشوند. علاوه بر این، تمام ابعاد نگاشت به برچسب محور یکسان باید برابر باشند.
هر یک از زیرمجموعه های ورودی و خروجی ممکن است حداکثر دارای یک بیضی واحد باشد (`...`). این بیضیها بر اساس ابعادی که با هیچ یک از برچسبهای محور نامگذاری شده مطابقت ندارند، ترسیم میشوند. اگر دو ورودی حاوی بیضی باشند، طبق استاندارد پخش NumPy [قوانین] (http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html) پخش می شوند.
ابعاد پخش شده در محل مربوط به بیضی در زیرنویس خروجی قرار می گیرد. اگر ابعاد پخش شده خالی نباشد و زیرنویس های خروجی حاوی بیضی نباشند، خطای InvalidArgument ایجاد می شود.
روش های عمومی
خروجی <T> | asOutput () دسته نمادین یک تانسور را برمیگرداند. |
استاتیک <T> Einsum <T> | |
خروجی <T> | خروجی () تانسور خروجی با شکل بسته به "معادله". |
روش های ارثی
روش های عمومی
خروجی عمومی <T> asOutput ()
دسته نمادین یک تانسور را برمیگرداند.
ورودی های عملیات TensorFlow خروجی های عملیات تنسورفلو دیگر هستند. این روش برای به دست آوردن یک دسته نمادین که نشان دهنده محاسبه ورودی است استفاده می شود.
عمومی ایستا Einsum <T> ایجاد ( دامنه دامنه، Iterable < عملوند <T>> ورودی، معادله رشته)
روش کارخانه برای ایجاد کلاسی که عملیات Einsum جدید را بسته بندی می کند.
مولفه های
محدوده | محدوده فعلی |
---|---|
ورودی ها | فهرست 1 یا 2 تنسور. |
معادله | رشته ای که عملیات جمع انیشتین را توصیف می کند. در قالب np.einsum. |
برمی گرداند
- یک نمونه جدید از Einsum