tensorflow:: عملیات:: MatrixDiagV2

#include <array_ops.h>

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

خلاصه

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

فرض کنید diagonal دارای r بُعد [I, J, ..., L, M, N] باشد. تانسور خروجی وقتی فقط یک قطر داده شده باشد ( k یک عدد صحیح باشد یا k[0] == k[1] r+1 با شکل [I, J, ..., L, M, num_rows, num_cols] است. در غیر این صورت، دارای رتبه 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]]

استدلال‌ها:

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

بازده:

  • Output : وقتی k یک عدد صحیح یا k[0] == k[1] باشد، رتبه r+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(
  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