MatrixDiag

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

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

تانسوری را با محتویات «مورب» به صورت قطرهای «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[1] - d"، و "index_in_diag = n - max(d, 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 band of diagonals.
 diagonals = np.array([[[1, 2, 3],  # Input shape: (2, 2, 3)
                        [4, 5, 0]],
                       [[6, 7, 9],
                        [9, 1, 0]]])
 tf.matrix_diag(diagonals, k = (-1, 0))
   ==> [[[1, 0, 0],  # Output shape: (2, 3, 3)
         [4, 2, 0],
         [0, 5, 3]],
        [[6, 0, 0],
         [9, 7, 0],
         [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]]
 

ثابت ها

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

روش های عمومی

خروجی <T>
asOutput ()
دسته نمادین تانسور را برمی گرداند.
static <T TType > MatrixDiag <T> را گسترش می دهد
ایجاد ( scope scope، عملوند <T> مورب، عملوند < TInt32 > k، عملوند < TInt32 > numRows، عملوند < TINT32 > numCols، عملوند <T> paddingValue)
روش Factory برای ایجاد کلاسی که یک عملیات MatrixDiag جدید را بسته بندی می کند.
خروجی <T>
خروجی ()
هنگامی که «k» یک عدد صحیح است یا «k[0] == k[1]» دارای رتبه «r+1» است، در غیر این صورت «r» را رتبه بندی کنید.

روش های ارثی

ثابت ها

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

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

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

روش های عمومی

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

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

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

استاتیک عمومی MatrixDiag <T> ایجاد ( دامنه دامنه ، عملوند <T> مورب، عملوند < TINT32 > k، عملوند < TINT32 > numRows، عملوند < TINT32 > numCols، عملوند <T> paddingValue)

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

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

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

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