Inverse¶
バージョン名: Inverse-14
カテゴリー: 行列
簡単な説明: Inverse 操作は、1 つまたは一連の正方可逆行列の逆行列または随伴行列 (共役転置) を計算します。
詳細な説明: Inverse 操作は、正方行列の逆行列を計算します。この操作では、部分ピボットを使用した LU 分解を使用して逆数を計算します。(部分ピボット・アルゴリズムによる LU 分解)
正方行列 A の逆行列 A^(-1) は次のように定義されます。
ここで、I は n 次元単位行列です。
逆行列は、入力行列が可逆である場合にのみ存在します。その場合、逆行列は一意になります。ただし、行列が可逆でない場合、操作により例外が発生するか、未定義の結果となる可能性があります。
この操作を使用して、逆行列の代わりに共役行列を計算できます。
正方行列 A の共役行列 adj(A) は次のように定義されます。
ここで、A^{-1} は A の逆行列、det(A) は A の行列式です。
共役行列は、逆行列が存在する場合にのみ存在します。
属性:
-
adjoint
説明: 操作の戻り値を変更します。true の場合、この操作は逆行列を求める代わりに、入力行列の随伴行列 (共役転置) を返します。
-
値の範囲: true、false
true
- 共役行列を出力します。false
- 逆行列を出力します。
タイプ: bool
デフォルト値 : false
必須: いいえ
入力:
1: input - 入力正方行列を表す形状 [B1、B2、…、Bn、ROW、COL] およびタイプ T のテンソル。最も内側の 2 つの次元は正方行列を形成し、同じサイズでなければなりません。B1、B2、…、Bn は、任意の量のバッチ次元を表します (単一の行列入力の場合は 0 にすることができます)。必須。
出力:
1: output - 入力と同じタイプ T および入力と同じ形状 [B1、B2、…、Bn、ROW、COL] を持つテンソル。入力行列の逆行列 (または共役行列) を表します。
タイプ:
T: サポートされている浮動小数点タイプ。
例 1: 2D 入力テンソル。
<layer ... name="Inverse" type="Inverse">
<data/>
<input>
<port id="0" precision="FP32">
<dim>3</dim> <!-- 3 rows of square matrix -->
<dim>3</dim> <!-- 3 columns of square matrix -->
</port>
</input>
<output>
<port id="1" precision="FP32" names="Inverse:0">
<dim>3</dim> <!-- 3 rows of square matrix -->
<dim>3</dim> <!-- 3 columns of square matrix -->
</port>
</output>
</layer>
例 2: 1 つのバッチ次元と adjoint=true を持つ 3D 入力テンソル。
<layer ... name="Inverse" type="Inverse">
<data adjoint="true"/>
<input>
<port id="0" precision="FP32">
<dim>2</dim> <!-- batch size of 2 -->
<dim>4</dim> <!-- 4 rows of square matrix -->
<dim>4</dim> <!-- 4 columns of square matrix -->
</port>
</input>
<output>
<port id="1" precision="FP32" names="Inverse:0">
<dim>2</dim> <!-- batch size of 2 -->
<dim>4</dim> <!-- 4 rows of square matrix -->
<dim>4</dim> <!-- 4 columns of square matrix -->
</port>
</output>
</layer>
例 3: 3 つのバッチ次元を持つ 5D 入力テンソル。
<layer ... name="Inverse" type="Inverse">
<data/>
<input>
<port id="0" precision="FP32">
<dim>5</dim> <!-- batch size of 5 -->
<dim>4</dim> <!-- batch size of 4 -->
<dim>3</dim> <!-- batch size of 3 -->
<dim>2</dim> <!-- 2 rows of square matrix -->
<dim>2</dim> <!-- 2 columns of square matrix -->
</port>
</input>
<output>
<port id="1" precision="FP32" names="Inverse:0">
<dim>5</dim> <!-- batch size of 5 -->
<dim>4</dim> <!-- batch size of 4 -->
<dim>3</dim> <!-- batch size of 3 -->
<dim>2</dim> <!-- 2 rows of square matrix -->
<dim>2</dim> <!-- 2 columns of square matrix -->
</port>
</output>
</layer>