MatrixSetDiag

публичный финальный класс MatrixSetDiag

Возвращает пакетный матричный тензор с новыми пакетными значениями диагонали.

Учитывая `input` и `diagonal`, эта операция возвращает тензор той же формы и значений, что и `input`, за исключением указанных диагоналей самых внутренних матриц. Они будут перезаписаны значениями в «диагонали».

`input` имеет размерность 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 = 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), rows + 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
выровнять (выровнять строку)
Выход <Т>
какВывод ()
Возвращает символический дескриптор тензора.
static <T расширяет TType > MatrixSetDiag <T>
create ( Область действия , ввод операнда <T>, диагональ операнда <T>, операнд < TInt32 > k, параметры... параметры)
Фабричный метод для создания класса, обертывающего новую операцию MatrixSetDiag.
Выход <Т>
выход ()
Ранжируйте `r+1`, используя `output.shape = input.shape`.

Унаследованные методы

Константы

общедоступная статическая финальная строка OP_NAME

Название этой операции, известное основному движку TensorFlow.

Постоянное значение: «MatrixSetDiagV3»

Публичные методы

public static MatrixSetDiag.Options align (Выравнивание строки)

Параметры
выровнять Некоторые диагонали короче, чем max_diag_len, и их необходимо дополнить. `align` — это строка, определяющая, как должны быть выровнены супердиагонали и субдиагонали соответственно. Существует четыре возможных варианта выравнивания: «RIGHT_LEFT» (по умолчанию), «LEFT_RIGHT», «LEFT_LEFT» и «RIGHT_RIGHT». «RIGHT_LEFT» выравнивает супердиагонали вправо (дополняет строку слева) и субдиагонали влево (дополняет строку справа). Это формат упаковки, который использует LAPACK. cuSPARSE использует «LEFT_RIGHT», что является противоположным выравниванием.

публичный вывод <T> asOutput ()

Возвращает символический дескриптор тензора.

Входные данные для операций TensorFlow являются выходными данными другой операции TensorFlow. Этот метод используется для получения символического дескриптора, который представляет собой вычисление входных данных.

public static MatrixSetDiag <T> create (область действия , ввод операнда <T>, диагональ операнда <T>, операнд < TInt32 > k, параметры... параметры)

Фабричный метод для создания класса, обертывающего новую операцию MatrixSetDiag.

Параметры
объем текущий объем
вход Ранг `r+1`, где `r >= 1`.
диагональ Ранжируйте `r`, когда `k` является целым числом или `k[0] == k[1]`. В противном случае он имеет ранг `r+1`. `к >= 1`.
к Диагональное смещение(я). Положительное значение означает супердиагональ, 0 относится к главной диагонали, а отрицательное значение означает поддиагонали. `k` может быть одним целым числом (для одной диагонали) или парой целых чисел, определяющих нижний и верхний пределы полосы матрицы. `k[0]` не должен быть больше `k[1]`.
параметры содержит значения необязательных атрибутов
Возврат
  • новый экземпляр MatrixSetDiag

публичный вывод <T> вывод ()

Ранжируйте `r+1`, используя `output.shape = input.shape`.