MatrixDiagPartV3

کلاس نهایی عمومی MatrixDiagPartV3

قسمت مورب دسته بندی شده یک تانسور دسته ای را برمی گرداند.

تانسوری را با قطرهای «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.
 
جایی که `y = max(-k[1], 0)`، `x = max(k[1], 0)`.

در غیر این صورت، تانسور خروجی دارای رتبه «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.
 
که در آن `d = k[1] - m`، `y = max(-d, 0) - offset`، و `x = max(d, 0) - offset`.

"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
 }
که در آن `diag_len(d) = min(cols - max(d, 0)، ردیف + min(d, 0))`.

ورودی باید حداقل یک ماتریس باشد.

به عنوان مثال:

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>، عملوند < TINT32 > k، عملوند <T> paddingValue، گزینه‌ها... گزینه‌ها)
روش کارخانه برای ایجاد کلاسی که یک عملیات جدید MatrixDiagPartV3 را بسته بندی می کند.
خروجی <T>
مورب ()
قطر(های) استخراج شده

روش های ارثی

ثابت ها

رشته نهایی ثابت عمومی OP_NAME

نام این عملیات، همانطور که توسط موتور هسته TensorFlow شناخته می شود

مقدار ثابت: "MatrixDiagPartV3"

روش های عمومی

استاتیک عمومی 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

خروجی عمومی <T> مورب ()

قطر(های) استخراج شده