Inverse

バージョン名: Inverse-14

カテゴリー: 行列

簡単な説明: Inverse 操作は、1 つまたは一連の正方可逆行列の逆行列または随伴行列 (共役転置) を計算します。

詳細な説明: Inverse 操作は、正方行列の逆行列を計算します。この操作では、部分ピボットを使用した LU 分解を使用して逆数を計算します。(部分ピボット・アルゴリズムによる LU 分解)

正方行列 A の逆行列 A^(-1) は次のように定義されます。

\[A \cdot A^{-1} = A^{-1} \cdot A = I\]

ここで、I は n 次元単位行列です。

逆行列は、入力行列が可逆である場合にのみ存在します。その場合、逆行列は一意になります。ただし、行列が可逆でない場合、操作により例外が発生するか、未定義の結果となる可能性があります。

この操作を使用して、逆行列の代わりに共役行列を計算できます。

正方行列 A の共役行列 adj(A) は次のように定義されます。

\[adj(A) = det(A) \cdot A^{-1}\]

ここで、A^{-1} は A の逆行列、det(A) は A の行列式です。

共役行列は、逆行列が存在する場合にのみ存在します。

属性:

  • adjoint

    • 説明: 操作の戻り値を変更します。true の場合、この操作は逆行列を求める代わりに、入力行列の随伴行列 (共役転置) を返します。

    • 値の範囲: truefalse

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