Reshape

バージョン名: Reshape-1

カテゴリー: 形状の操作

簡単な説明: Reshape 操作は、指定された順序に従って入力テンソルの次元を変更します。入力テンソルボリュームは出力テンソルボリュームと等しくなります。ここで、ボリュームは次元の積です。

詳細説明:

再形成 は、サイズ変更される data と新しい出力の shape という 2 つの入力テンソルを受け取ります。shape 内の値は、-10、および任意の正の整数です。-10 は特別な値です。

  • 0: special_zerotrue に設定されている場合、“入力テンソルのそれぞれの次元 (左揃え) をコピーする” ことを意味します。それ以外の場合は通常の次元であり、空のテンソルに適用されます。

  • -1: この次元が全体の要素数を入力テンソルと同じに保つように計算されることを意味します。再形成操作では、-1 を 1 つだけ使用できます。

special_zerotrue に設定されている場合、インデックス 0 は入力テンソルのランクより大きくすることはできません。

属性:

  • special_zero

    • 説明: special_zero は、shape 内のゼロ値がどのように解釈されるかを制御します。special_zerofalse の場合、0 はそのまま解釈されます。これは、出力形状の指定された位置にゼロ次元が含まれることを意味します。この場合、入力テンソルと出力テンソルは空です。special_zerotrue の場合、shape 内のすべてのゼロは、対応する次元を data.shape から出力シェイプ (左揃え) にコピーすることを意味します。

    • 値の範囲: false または true

    • タイプ: boolean

    • 必須: はい

入力:

  • 1: data はタイプ T の任意の形状のテンソルです。必須。

  • 2: 出力形状を記述する T_SHAPE タイプの shape 1D テンソル。必須。

出力:

  • 1: data 入力テンソルと同じ内容を持ち、形状が shape 入力テンソルによって定義されたタイプ T の出力テンソル。

タイプ:

  • T: 任意の数値タイプ。

  • T_SHAPE: サポートされている整数タイプ。

例:

例 1: 空のテンソルを再形成

 <layer ... type="Reshape" ...>
     <data special_zero="false"/>
     <input>
         <port id="0">
             <dim>2</dim>
             <dim>5</dim>
             <dim>5</dim>
             <dim>0</dim>
         </port>
         <port id="1">
             <dim>2</dim>   <!--The tensor contains 2 elements: 0, 4 -->
         </port>
     </input>
     <output>
         <port id="2">
             <dim>0</dim>
             <dim>4</dim>
         </port>
     </output>
 </layer>

例 2: テンソルの再形成 - 最初の次元を保持し、2 番目を計算して 3 番目の次元の値を修正

 <layer ... type="Reshape" ...>
     <data special_zero="true"/>
     <input>
         <port id="0">
             <dim>2</dim>
             <dim>5</dim>
             <dim>5</dim>
             <dim>24</dim>
         </port>
         <port id="1">
             <dim>3</dim>   <!--The tensor contains 3 elements: 0, -1, 4 -->
         </port>
     </input>
     <output>
         <port id="2">
             <dim>2</dim>
             <dim>150</dim>
             <dim>4</dim>
         </port>
     </output>
 </layer>

例 3: テンソルの再形成 - 最初の 2 つの次元を保持し、3 番目の次元の値を修正し、4 番目の次元を計算

 <layer ... type="Reshape" ...>
     <data special_zero="true"/>
     <input>
         <port id="0">
             <dim>2</dim>
             <dim>2</dim>
             <dim>3</dim>
         </port>
         <port id="1">
             <dim>4</dim>   <!--The tensor contains 4 elements: 0, 0, 1, -1 -->
         </port>
     </input>
     <output>
         <port id="2">
             <dim>2</dim>
             <dim>2</dim>
             <dim>1</dim>
             <dim>3</dim>
         </port>
     </output>
 </layer>

例 4: テンソルの再形成 - 最初の次元を計算し、2 番目の次元を保持

 <layer ... type="Reshape" ...>
     <data special_zero="true"/>
     <input>
         <port id="0">
             <dim>3</dim>
             <dim>1</dim>
             <dim>1</dim>
         </port>
         <port id="1">
             <dim>2</dim>   <!--The tensor contains 2 elements: -1, 0 -->
         </port>
     </input>
     <output>
         <port id="2">
             <dim>3</dim>
             <dim>1</dim>
         </port>
     </output>
 </layer>

例 5: テンソルの再形成 - 最初の次元を保存し、2 番目の次元を計算

 <layer ... type="Reshape" ...>
     <data special_zero="true"/>
     <input>
         <port id="0">
             <dim>3</dim>
             <dim>1</dim>
             <dim>1</dim>
         </port>
         <port id="1">
             <dim>2</dim>   <!--The tensor contains 2 elements: 0, -1 -->
         </port>
     </input>
     <output>
         <port id="2">
             <dim>3</dim>
             <dim>1</dim>
         </port>
     </output>
 </layer>