MatrixSetDiagV3

パブリック最終クラスMatrixSetDiagV3

新しいバッチ化された対角値を含むバッチ化された行列テンソルを返します。

`input` と `diagonal` を指定すると、この演算は、最も内側の行列の指定された対角を除き、`input` と同じ形状と値を持つテンソルを返します。これらは「diagonal」の値によって上書きされます。

`input` は `r+1` 次元 `[I, J, ..., L, M, N]` を持ちます。 `k` がスカラーまたは `k[0] == k[1]` の場合、`diagonal` は `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))`

出力は、次元 `[I, J, ..., L, M, N]` を持つランク `k+1` のテンソルです。 `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」はゼロです。

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]]]
 
 

ネストされたクラス

クラスMatrixSetDiagV3.オプションMatrixSetDiagV3のオプションの属性

パブリックメソッド

静的MatrixSetDiagV3.Options
align (文字列の整列)
出力<T>
asOutput ()
テンソルのシンボリック ハンドルを返します。
静的 <T> MatrixSetDiagV3 <T>
create (スコープscope、オペランド<T>入力、オペランド<T>対角、オペランド<整数>k、オプション...オプション)
新しい MatrixSetDiagV3 オペレーションをラップするクラスを作成するためのファクトリ メソッド。
出力<T>
出力()
「output.shape = input.shape」で「r+1」をランク付けします。

継承されたメソッド

パブリックメソッド

public static MatrixSetDiagV3.Options align (文字列整列)

パラメーター
整列する一部の対角線は「max_diag_len」より短いため、パディングする必要があります。 `align` は、上対角と下対角をそれぞれどのように配置するかを指定する文字列です。可能な配置は、「RIGHT_LEFT」 (デフォルト)、「LEFT_RIGHT」、「LEFT_LEFT」、「RIGHT_RIGHT」の 4 つです。 「RIGHT_LEFT」は、上対角を右に配置し (行を左に埋めます)、下対角を左に配置します (行を右に埋めます)。 LAPACK が使用するパッキング形式です。 cuSPARSE は、逆の配置である「LEFT_RIGHT」を使用します。

public Output <T> asOutput ()

テンソルのシンボリック ハンドルを返します。

TensorFlow オペレーションへの入力は、別の TensorFlow オペレーションの出力です。このメソッドは、入力の計算を表すシンボリック ハンドルを取得するために使用されます。

public static MatrixSetDiagV3 <T> create (スコープスコープ、オペランド<T> 入力、オペランド<T> 対角線、オペランド<整数> k、オプション...オプション)

新しい MatrixSetDiagV3 オペレーションをラップするクラスを作成するためのファクトリ メソッド。

パラメーター
範囲現在のスコープ
入力ランク「r+1」、ただし「r >= 1」。
対角線「k」が整数または「k[0] == k[1]」の場合、「r」をランク付けします。それ以外の場合、ランクは「r+1」になります。 `k >= 1`。
k対角オフセット。正の値は上対角を意味し、0 は主対角を意味し、負の値は下対角を意味します。 「k」は、単一の整数 (単一の対角線の場合)、またはマトリックス バンドの下限と上限を指定する整数のペアにすることができます。 `k[0]` は `k[1]` より大きくてはなりません。
オプションオプションの属性値を持ちます
戻り値
  • MatrixSetDiagV3 の新しいインスタンス

public出力<T>出力()

「output.shape = input.shape」で「r+1」をランク付けします。