هشدار: این API منسوخ شده است و پس از پایدار شدن جایگزینی، در نسخه بعدی TensorFlow حذف خواهد شد.

MatrixDiagV3

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

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

تانسوری را با محتویات «مورب» به صورت قطرهای «k[0]»-th به «k[1]»-امین یک ماتریس برمی‌گرداند و هر چیز دیگری با «padding» پر شده است. 'num_rows' و 'num_cols' بعد داخلی ترین ماتریس خروجی را مشخص می کنند. اگر هر دو مشخص نشده باشند، op داخلی‌ترین ماتریس را مربع فرض می‌کند و اندازه آن را از «k» و درونی‌ترین بعد «مورب» استنباط می‌کند. اگر فقط یکی از آنها مشخص شده باشد، op فرض می کند که مقدار نامشخص بر اساس معیارهای دیگر کوچکترین مقدار ممکن است.

اجازه دهید «مورب» دارای ابعاد «r» باشد «[I، J، ...، L، M، N]». تانسور خروجی دارای رتبه «r+1» با شکل «[I، J، ...، L، M، تعداد_ردیف‌ها، num_cols]» است که فقط یک قطر داده شود (k» یک عدد صحیح است یا «k[0] == k[1]`). در غیر این صورت، دارای رتبه «r» با شکل «[I، J، ...، L، num_rows، num_cols]» است.

دومین بعد درونی «مورب» معنایی دوگانه دارد. وقتی `k` اسکالر است و یا` K [0] == K [1] `،` M` بخشی از اندازه دسته [I، J، ...، M] است، و تانسور خروجی است:

output[i, j, ..., l, m, n]
   = diagonal[i, j, ..., l, n-max(d_upper, 0)] ; if n - m == d_upper
     padding_value                             ; otherwise
 
در غیر این صورت، `M` است به عنوان تعدادی از قطر برای ماتریس در همان دسته ای تحت درمان با (` M = K [1] -k [0] + 1`) و تانسور خروجی است:
output[i, j, ..., l, m, n]
   = diagonal[i, j, ..., l, diag_index, index_in_diag] ; if k[0] <= d <= k[1]
     padding_value                                     ; otherwise
 
که در آن `D = n - m`، "diag_index = [k] - 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 (گذرگاه - حداکثر (د، 0)، ردیف + دقیقه (د، 0))`.

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

# The main diagonal.
 diagonal = np.array([[1, 2, 3, 4],            # Input shape: (2, 4)
                      [5, 6, 7, 8]])
 tf.matrix_diag(diagonal) ==> [[[1, 0, 0, 0],  # Output shape: (2, 4, 4)
                                [0, 2, 0, 0],
                                [0, 0, 3, 0],
                                [0, 0, 0, 4]],
                               [[5, 0, 0, 0],
                                [0, 6, 0, 0],
                                [0, 0, 7, 0],
                                [0, 0, 0, 8]]]
 
 # A superdiagonal (per batch).
 diagonal = np.array([[1, 2, 3],  # Input shape: (2, 3)
                      [4, 5, 6]])
 tf.matrix_diag(diagonal, k = 1)
   ==> [[[0, 1, 0, 0],  # Output shape: (2, 4, 4)
         [0, 0, 2, 0],
         [0, 0, 0, 3],
         [0, 0, 0, 0]],
        [[0, 4, 0, 0],
         [0, 0, 5, 0],
         [0, 0, 0, 6],
         [0, 0, 0, 0]]]
 
 # A tridiagonal band (per batch).
 diagonals = np.array([[[0, 8, 9],  # Input shape: (2, 2, 3)
                        [1, 2, 3],
                        [4, 5, 0]],
                       [[0, 2, 3],
                        [6, 7, 9],
                        [9, 1, 0]]])
 tf.matrix_diag(diagonals, k = (-1, 1))
   ==> [[[1, 8, 0],  # Output shape: (2, 3, 3)
         [4, 2, 9],
         [0, 5, 3]],
        [[6, 2, 0],
         [9, 7, 3],
         [0, 1, 9]]]
 
 # LEFT_RIGHT alignment.
 diagonals = np.array([[[8, 9, 0],  # Input shape: (2, 2, 3)
                        [1, 2, 3],
                        [0, 4, 5]],
                       [[2, 3, 0],
                        [6, 7, 9],
                        [0, 9, 1]]])
 tf.matrix_diag(diagonals, k = (-1, 1), align="LEFT_RIGHT")
   ==> [[[1, 8, 0],  # Output shape: (2, 3, 3)
         [4, 2, 9],
         [0, 5, 3]],
        [[6, 2, 0],
         [9, 7, 3],
         [0, 1, 9]]]
 
 # Rectangular matrix.
 diagonal = np.array([1, 2])  # Input shape: (2)
 tf.matrix_diag(diagonal, k = -1, num_rows = 3, num_cols = 4)
   ==> [[0, 0, 0, 0],  # Output shape: (3, 4)
        [1, 0, 0, 0],
        [0, 2, 0, 0]]
 
 # Rectangular matrix with inferred num_cols and padding_value = 9.
 tf.matrix_diag(diagonal, k = -1, num_rows = 3, padding_value = 9)
   ==> [[9, 9],  # Output shape: (3, 2)
        [1, 9],
        [9, 2]]
 
 

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

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

روش های عمومی

شخص MatrixDiagV3.Options
چین (چین رشته)
خروجی <T>
asOutput ()
دسته نمادین یک تانسور را برمی‌گرداند.
شخص <T> MatrixDiagV3 <T>
ایجاد ( محدوده دامنه، عملوند <T> مورب، عملوند <صحیح> K، عملوند <صحیح> numRows، عملوند <صحیح> numCols، عملوند <T> paddingValue، گزینه ها ... گزینه ها)
روش کارخانه برای ایجاد کلاسی که یک عملیات جدید MatrixDiagV3 را بسته بندی می کند.
خروجی <T>
خروجی ()
دارای رتبه «r+1» وقتی «k» یک عدد صحیح است یا «k[0] == k[1]»، در غیر این صورت «r» را رتبه بندی کنید.

روش های ارثی

روش های عمومی

عمومی استاتیک MatrixDiagV3.Options چین (چین رشته)

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

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

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

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

عمومی استاتیک MatrixDiagV3 <T> ایجاد ( محدوده دامنه، عملوند <T> مورب، عملوند <صحیح> K، عملوند <صحیح> numRows، عملوند <صحیح> numCols، عملوند <T> paddingValue، گزینه ها ... گزینه ها)

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

مولفه های
محدوده محدوده فعلی
مورب رتبه `r`، جایی که `r >= 1`
ک افست (های) مورب. مقدار مثبت به معنای ابر قطری، 0 به قطر اصلی و مقدار منفی به معنای قطرهای فرعی است. `k` می تواند یک عدد صحیح منفرد (برای یک مورب) یا یک جفت اعداد صحیح باشد که انتهای پایین و بالای یک باند ماتریس را مشخص می کند. «k[0]» نباید بزرگتر از «k[1]» باشد.
numRows تعداد ردیف های ماتریس خروجی. اگر ارائه نشده باشد، عملیات ماتریس خروجی را یک ماتریس مربع فرض می‌کند و اندازه ماتریس را از k و درونی‌ترین بعد «مورب» استنتاج می‌کند.
numCols تعداد ستون های ماتریس خروجی اگر ارائه نشده باشد، عملیات ماتریس خروجی را یک ماتریس مربع فرض می‌کند و اندازه ماتریس را از k و درونی‌ترین بعد «مورب» استنتاج می‌کند.
paddingValue عددی که باید ناحیه خارج از نوار مورب مشخص شده را با آن پر کنید. پیش فرض 0 است.
گزینه ها مقادیر ویژگی های اختیاری را حمل می کند
برمی گرداند
  • یک نمونه جدید از MatrixDiagV3

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

دارای رتبه «r+1» وقتی «k» یک عدد صحیح است یا «k[0] == k[1]»، در غیر این صورت «r» را رتبه بندی کنید.