قسمت مورب دسته بندی شده یک تانسور دسته ای را برمی گرداند.
تانسوری را با قطرهای «k[0]»-th به «k[1]»-امین «ورودی» دستهای برمیگرداند.
فرض کنید «ورودی» دارای ابعاد «r» است «[I، J، ...، L، M، N]». اجازه دهید "max_diag_len" حداکثر طول در بین تمام قطرهای استخراج شود، "max_diag_len = min(M + min(k[1], 0)، N + min(-k[0], 0))" اجازه دهید "num_diags" تعداد قطرهایی باشد که باید استخراج شوند، «num_diags = k[1] - k[0] + 1».
اگر "num_diags == 1" باشد، تانسور خروجی دارای رتبه "r - 1" با شکل "[I، J، ...، L، max_diag_len]" و مقادیر:
diagonal[i, j, ..., l, n]
= input[i, j, ..., l, n+y, n+x] ; if 0 <= n+y < M and 0 <= n+x < N,
padding_value ; otherwise.
در غیر این صورت، تانسور خروجی دارای رتبه «r» با ابعاد «[I، J، ...، L، num_diags، max_diag_len]» با مقادیر:
diagonal[i, j, ..., l, m, n]
= input[i, j, ..., l, n+y, n+x] ; if 0 <= n+y < M and 0 <= n+x < N,
padding_value ; otherwise.
"offset" صفر است مگر زمانی که تراز مورب به سمت راست باشد.
offset = max_diag_len - diag_len(d) ; if (`align` in {RIGHT_LEFT, RIGHT_RIGHT
and `d >= 0`) or
(`align` in {LEFT_RIGHT, RIGHT_RIGHT}
and `d <= 0`)
0 ; otherwise
}
ورودی باید حداقل یک ماتریس باشد.
به عنوان مثال:
input = np.array([[[1, 2, 3, 4], # Input shape: (2, 3, 4)
[5, 6, 7, 8],
[9, 8, 7, 6]],
[[5, 4, 3, 2],
[1, 2, 3, 4],
[5, 6, 7, 8]]])
# A main diagonal from each batch.
tf.matrix_diag_part(input) ==> [[1, 6, 7], # Output shape: (2, 3)
[5, 2, 7]]
# A superdiagonal from each batch.
tf.matrix_diag_part(input, k = 1)
==> [[2, 7, 6], # Output shape: (2, 3)
[4, 3, 8]]
# A band from each batch.
tf.matrix_diag_part(input, k = (-1, 2))
==> [[[0, 3, 8], # Output shape: (2, 4, 3)
[2, 7, 6],
[1, 6, 7],
[5, 8, 0]],
[[0, 3, 4],
[4, 3, 8],
[5, 2, 7],
[1, 6, 0]]]
# LEFT_RIGHT alignment.
tf.matrix_diag_part(input, k = (-1, 2), align="LEFT_RIGHT")
==> [[[3, 8, 0], # Output shape: (2, 4, 3)
[2, 7, 6],
[1, 6, 7],
[0, 5, 8]],
[[3, 4, 0],
[4, 3, 8],
[5, 2, 7],
[0, 1, 6]]]
# max_diag_len can be shorter than the main diagonal.
tf.matrix_diag_part(input, k = (-2, -1))
==> [[[5, 8],
[9, 0]],
[[1, 6],
[5, 0]]]
# padding_value = 9
tf.matrix_diag_part(input, k = (1, 3), padding_value = 9)
==> [[[9, 9, 4], # Output shape: (2, 3, 3)
[9, 3, 8],
[2, 7, 6]],
[[9, 9, 2],
[9, 3, 4],
[4, 3, 8]]]
کلاس های تو در تو
کلاس | MatrixDiagPartV3.Options | ویژگی های اختیاری برای MatrixDiagPartV3 |
ثابت ها
رشته | OP_NAME | نام این عملیات، همانطور که توسط موتور هسته TensorFlow شناخته می شود |
روش های عمومی
استاتیک MatrixDiagPartV3.Options | تراز کردن (تراز رشته) |
خروجی <T> | asOutput () دسته نمادین تانسور را برمی گرداند. |
استاتیک <T TType > MatrixDiagPartV3 <T> را گسترش می دهد | |
خروجی <T> | مورب () قطر(های) استخراج شده |
روش های ارثی
ثابت ها
رشته نهایی ثابت عمومی OP_NAME
نام این عملیات، همانطور که توسط موتور هسته TensorFlow شناخته می شود
روش های عمومی
استاتیک عمومی MatrixDiagPartV3. تراز گزینه ها (تراز رشته)
پارامترها
تراز کردن | برخی از موربها کوتاهتر از «max_diag_len» هستند و باید روی آنها قرار داده شوند. «align» رشتهای است که مشخص میکند به ترتیب چگونه ابرموربها و زیر قطرها باید تراز شوند. چهار تراز احتمالی وجود دارد: «RIGHT_LEFT» (پیشفرض)، «LEFT_RIGHT»، «LEFT_LEFT» و «RIGHT_RIGHT». "RIGHT_LEFT" ابرمورب ها را به سمت راست تراز می کند (ردیف را به سمت چپ قرار می دهد) و قطرهای فرعی را در سمت چپ (راست روی ردیف قرار می دهد). این فرمت بسته بندی است که LAPACK از آن استفاده می کند. cuSPARSE از "LEFT_RIGHT" استفاده می کند که تراز مخالف است. |
---|
خروجی عمومی <T> asOutput ()
دسته نمادین تانسور را برمی گرداند.
ورودی های عملیات TensorFlow خروجی های عملیات تنسورفلو دیگر هستند. این روش برای به دست آوردن یک دسته نمادین که نشان دهنده محاسبه ورودی است استفاده می شود.
استاتیک عمومی MatrixDiagPartV3 <T> ایجاد ( دامنه دامنه ، ورودی عملوند <T>، عملوند < TINT32 > k، عملوند <T> paddingValue، گزینهها... گزینهها)
روش کارخانه برای ایجاد کلاسی که یک عملیات جدید MatrixDiagPartV3 را بسته بندی می کند.
پارامترها
دامنه | محدوده فعلی |
---|---|
ورودی | تانسور `r` در جایی که `r >= 2` رتبه بندی کنید. |
ک | افست (های) مورب. مقدار مثبت به معنای ابر قطری، 0 به قطر اصلی و مقدار منفی به معنای قطرهای فرعی است. `k` می تواند یک عدد صحیح منفرد (برای یک مورب) یا یک جفت اعداد صحیح باشد که انتهای پایین و بالای یک باند ماتریس را مشخص می کند. «k[0]» نباید بزرگتر از «k[1]» باشد. |
paddingValue | مقداری که باید ناحیه خارج از نوار مورب مشخص شده را با آن پر کنید. پیش فرض 0 است. |
گزینه ها | مقادیر ویژگی های اختیاری را حمل می کند |
برمی گرداند
- یک نمونه جدید از MatrixDiagPartV3