انقباض تانسور طبق قرارداد جمع انیشتین.
انقباض و کاهش تانسور عمومی را اجرا می کند. هر تانسور ورودی باید دارای یک زیرنویس ورودی مربوطه باشد که در سمت چپ معادله جدا شده با کاما ظاهر می شود. سمت راست معادله از زیرنویس خروجی تشکیل شده است. زیرنویس های ورودی و زیرنویس خروجی باید از برچسب های محوری با نام صفر یا بیشتر و حداکثر یک بیضی (`...`) تشکیل شده باشند.
برچسبهای محور نامگذاریشده ممکن است هر نویسه دیگری غیر از آنهایی باشند که معنای خاصی دارند، یعنی «,.->». اگر معادله ای با فرمت نامناسب دریافت کند، رفتار این عملیات تعریف نشده است. از آنجایی که اعتبارسنجی در زمان ساخت گراف انجام می شود، بررسی های اعتبارسنجی قالب را در زمان اجرا حذف می کنیم.
توجه: این عملیات برای فراخوانی توسط کاربر در نظر گرفته نشده است. در عوض کاربران باید مستقیماً tf.einsum
تماس بگیرند. این یک Op پنهان است که توسط tf.einsum
استفاده می شود.
عملیات بر روی ورودی(های) طبق قوانین زیر اعمال می شود:
(الف) قطرهای تعمیم یافته: برای ابعاد ورودی متناظر با برچسبهای محور که بیش از یک بار در زیرنویس ورودی یکسان ظاهر میشوند، قطر تعمیمیافته (ک بعدی) را میگیریم. برای مثال، در معادله «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