MatrixDiagV3

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

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

Возвращает тензор с содержимым в `diagonal` как от `k[0]`-й до `k[1]`-й диагонали матрицы, со всем остальным, дополненным `padding`. `num_rows` и `num_cols` определяют размер самой внутренней матрицы вывода. Если оба не указаны, op предполагает, что самая внутренняя матрица является квадратной, и определяет ее размер на основе «k» и самого внутреннего размера «диагонали». Если указан только один из них, оператор предполагает, что неуказанное значение является наименьшим из возможных на основе других критериев.

Пусть «диагональ» имеет «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]».

Второе внутреннее измерение «диагонали» имеет двойной смысл. Когда `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 = 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.
 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.Параметры Дополнительные атрибуты для MatrixDiagV3

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

статический MatrixDiagV3.Options
выровнять (выровнять строку)
Выход <Т>
какВывод ()
Возвращает символический дескриптор тензора.
статический <T> MatrixDiagV3 <T>
create ( Область действия, Диагональ операнда <T>, Операнд <Целое число> k, Операнд <Целое число> numRows, Операнд <Целое число> numCols, Операнд <T>_paddingValue, Опции... параметры)
Фабричный метод для создания класса, обертывающего новую операцию MatrixDiagV3.
Выход <Т>
выход ()
Имеет ранг `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 являются выходными данными другой операции TensorFlow. Этот метод используется для получения символического дескриптора, который представляет собой вычисление входных данных.

public static MatrixDiagV3 <T> create ( Область действия, Диагональ операнда <T>, Операнд <Целое число> k, Операнд <Целое число> numRows, Операнд <Целое число> numCols, Операнд <T> paddingValue, Опции... опции)

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

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

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

Имеет ранг `r+1`, когда `k` является целым числом или `k[0] == k[1]`, в противном случае ранг `r`.