MatrixSetDiag

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

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

با توجه به «ورودی» و «مورب»، این عملیات یک تانسور را با همان شکل و مقادیر «ورودی» برمی‌گرداند، به جز قطرهای مشخص‌شده درونی‌ترین ماتریس‌ها. اینها با مقادیر «مورب» بازنویسی خواهند شد.

«ورودی» دارای ابعاد «r+1» است «[I، J، ...، L، M، N]». وقتی «k» اسکالر یا «k[0] == k[1]» است، «مورب» دارای ابعاد «r» است «[I، J، ...، L، max_diag_len]». در غیر این صورت، دارای ابعاد «r+1» «[I، J، ...، L، num_diags، max_diag_len]» است. "num_diags" تعداد قطرها است، "num_diags = k[1] - k[0] + 1". «max_diag_len» طولانی‌ترین مورب در محدوده «[k[0]، k[1]]»، «max_diag_len = min(M + min(k[1], 0)، N + min(-k[0]) است. , 0))`

خروجی تانسور رتبه «k+1» با ابعاد «[I، J، ...، L، M، N]» است. اگر «k» اسکالر یا «k[0] == k[1]» باشد:

output[i, j, ..., l, m, n]
   = diagonal[i, j, ..., l, n-max(k[1], 0)] ; if n - m == k[1]
     input[i, j, ..., l, m, n]              ; otherwise
 
در غیر این صورت،
output[i, j, ..., l, m, n]
   = diagonal[i, j, ..., l, diag_index, index_in_diag] ; if k[0] <= d <= k[1]
     input[i, j, ..., l, m, n]                         ; otherwise
 
که در آن "d = n - m"، "diag_index = k[1] - d"، و "index_in_diag = n - 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))`.

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

# The main diagonal.
 input = np.array([[[7, 7, 7, 7],              # Input shape: (2, 3, 4)
                    [7, 7, 7, 7],
                    [7, 7, 7, 7]],
                   [[7, 7, 7, 7],
                    [7, 7, 7, 7],
                    [7, 7, 7, 7]]])
 diagonal = np.array([[1, 2, 3],               # Diagonal shape: (2, 3)
                      [4, 5, 6]])
 tf.matrix_set_diag(input, diagonal)
   ==> [[[1, 7, 7, 7],  # Output shape: (2, 3, 4)
         [7, 2, 7, 7],
         [7, 7, 3, 7]],
        [[4, 7, 7, 7],
         [7, 5, 7, 7],
         [7, 7, 6, 7]]]
 
 # A superdiagonal (per batch).
 tf.matrix_set_diag(input, diagonal, k = 1)
   ==> [[[7, 1, 7, 7],  # Output shape: (2, 3, 4)
         [7, 7, 2, 7],
         [7, 7, 7, 3]],
        [[7, 4, 7, 7],
         [7, 7, 5, 7],
         [7, 7, 7, 6]]]
 
 # A band of diagonals.
 diagonals = np.array([[[0, 9, 1],  # Diagonal shape: (2, 4, 3)
                        [6, 5, 8],
                        [1, 2, 3],
                        [4, 5, 0]],
                       [[0, 1, 2],
                        [5, 6, 4],
                        [6, 1, 2],
                        [3, 4, 0]]])
 tf.matrix_set_diag(input, diagonals, k = (-1, 2))
   ==> [[[1, 6, 9, 7],  # Output shape: (2, 3, 4)
         [4, 2, 5, 1],
         [7, 5, 3, 8]],
        [[6, 5, 1, 7],
         [3, 1, 6, 2],
         [7, 4, 2, 4]]]
 
 # LEFT_RIGHT alignment.
 diagonals = np.array([[[9, 1, 0],  # Diagonal shape: (2, 4, 3)
                        [6, 5, 8],
                        [1, 2, 3],
                        [0, 4, 5]],
                       [[1, 2, 0],
                        [5, 6, 4],
                        [6, 1, 2],
                        [0, 3, 4]]])
 tf.matrix_set_diag(input, diagonals, k = (-1, 2), align="LEFT_RIGHT")
   ==> [[[1, 6, 9, 7],  # Output shape: (2, 3, 4)
         [4, 2, 5, 1],
         [7, 5, 3, 8]],
        [[6, 5, 1, 7],
         [3, 1, 6, 2],
         [7, 4, 2, 4]]]
 
 

کلاس های تو در تو

کلاس MatrixSetDiag.Options ویژگی های اختیاری برای MatrixSetDiag

ثابت ها

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

روش های عمومی

استاتیک MatrixSetDiag.Options
تراز کردن (تراز رشته)
خروجی <T>
asOutput ()
دسته نمادین تانسور را برمی گرداند.
استاتیک <T TType > MatrixSetDiag <T> را گسترش می دهد
ایجاد ( دامنه دامنه ، ورودی عملوند <T>، عملوند <T> مورب، عملوند < TINT32 > k، گزینه‌ها... گزینه‌ها)
روش کارخانه برای ایجاد کلاسی که یک عملیات MatrixSetDiag جدید را بسته بندی می کند.
خروجی <T>
خروجی ()
رتبه «r+1»، با «output.shape = input.shape».

روش های ارثی

ثابت ها

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

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

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

روش های عمومی

استاتیک عمومی MatrixSetDiag. Options align (تراز رشته)

پارامترها
تراز کردن برخی از مورب‌ها کوتاه‌تر از «max_diag_len» هستند و باید روی آن‌ها قرار داده شوند. «align» رشته‌ای است که مشخص می‌کند به ترتیب چگونه ابرمورب‌ها و زیر قطرها باید تراز شوند. چهار تراز احتمالی وجود دارد: «RIGHT_LEFT» (پیش‌فرض)، «LEFT_RIGHT»، «LEFT_LEFT» و «RIGHT_RIGHT». "RIGHT_LEFT" ابرمورب ها را به سمت راست تراز می کند (ردیف را به سمت چپ قرار می دهد) و قطرهای فرعی را در سمت چپ (راست روی ردیف قرار می دهد). این فرمت بسته بندی است که LAPACK از آن استفاده می کند. cuSPARSE از "LEFT_RIGHT" استفاده می کند که تراز مخالف است.

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

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

ورودی های عملیات TensorFlow خروجی های عملیات تنسورفلو دیگر هستند. این روش برای به دست آوردن یک دسته نمادین که نشان دهنده محاسبه ورودی است استفاده می شود.

عمومی ایستا MatrixSetDiag <T> ایجاد ( دامنه دامنه ، ورودی عملوند <T>، عملوند <T> مورب، عملوند < TINT32 > k، گزینه‌ها... گزینه‌ها)

روش کارخانه برای ایجاد کلاسی که یک عملیات MatrixSetDiag جدید را بسته بندی می کند.

پارامترها
دامنه محدوده فعلی
ورودی رتبه `r+1`، جایی که `r >= 1`.
مورب هنگامی که «k» یک عدد صحیح است یا «k[0] == k[1]» «r» را رتبه بندی کنید. در غیر این صورت دارای رتبه r+1 می باشد. `k>= 1`.
ک افست (های) مورب. مقدار مثبت به معنای ابر قطری، 0 به قطر اصلی و مقدار منفی به معنای قطرهای فرعی است. `k` می تواند یک عدد صحیح منفرد (برای یک مورب) یا یک جفت اعداد صحیح باشد که انتهای پایین و بالای یک باند ماتریس را مشخص می کند. «k[0]» نباید بزرگتر از «k[1]» باشد.
گزینه ها مقادیر ویژگی های اختیاری را حمل می کند
برمی گرداند
  • یک نمونه جدید از MatrixSetDiag

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

رتبه «r+1»، با «output.shape = input.shape».