جریان تنسور:: عملیات:: MatrixDiagV2

#include <array_ops.h>

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

خلاصه

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

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

دومین بعد داخلی diagonal معنای دوگانه دارد. وقتی 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]]

استدلال ها:

  • scope: یک شی Scope
  • مورب: رتبه r ، جایی که r >= 1
  • k: افست (های) مورب. مقدار مثبت به معنای ابر قطری، 0 به قطر اصلی و مقدار منفی به معنای قطرهای فرعی است. k می تواند یک عدد صحیح منفرد (برای یک مورب) یا یک جفت اعداد صحیح باشد که انتهای پایین و بالای یک باند ماتریس را مشخص می کند. k[0] نباید بزرگتر از k[1] باشد.
  • num_rows: تعداد ردیف های ماتریس خروجی. اگر ارائه نشده باشد، عملیات ماتریس خروجی را یک ماتریس مربع فرض می‌کند و اندازه ماتریس را از k و درونی‌ترین بعد diagonal استنتاج می‌کند.
  • num_cols: تعداد ستون های ماتریس خروجی. اگر ارائه نشده باشد، عملیات ماتریس خروجی را یک ماتریس مربع فرض می‌کند و اندازه ماتریس را از k و درونی‌ترین بعد diagonal استنتاج می‌کند.
  • padding_value: عددی که باید ناحیه خارج از نوار مورب مشخص شده را پر کنید. پیش فرض 0 است.

برمی گرداند:

  • Output : دارای رتبه r+1 زمانی که k یک عدد صحیح باشد یا k[0] == k[1] ، در غیر این صورت رتبه r .

سازندگان و ویرانگرها

MatrixDiagV2 (const :: tensorflow::Scope & scope, :: tensorflow::Input diagonal, :: tensorflow::Input k, :: tensorflow::Input num_rows, :: tensorflow::Input num_cols, :: tensorflow::Input padding_value)

صفات عمومی

operation
output

توابع عمومی

node () const
::tensorflow::Node *
operator::tensorflow::Input () const
operator::tensorflow::Output () const

صفات عمومی

عمل

Operation operation

خروجی

::tensorflow::Output output

توابع عمومی

MatrixDiagV2

 MatrixDiagV2(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input diagonal,
  ::tensorflow::Input k,
  ::tensorflow::Input num_rows,
  ::tensorflow::Input num_cols,
  ::tensorflow::Input padding_value
)

گره

::tensorflow::Node * node() const 

عملگر::tensorflow::ورودی

 operator::tensorflow::Input() const 

عملگر::tensorflow::خروجی

 operator::tensorflow::Output() const