ShuffleChannels

バージョン名: ShuffleChannels-1

カテゴリー: ShuffleChannels

カテゴリー: データ移動

簡単な説明: ShuffleChannels は、入力テンソルのチャネル次元でデータを並べ替えます。

詳細な説明:

data_shape の入力テンソルは、常に次の形状の 4D テンソルとして解釈されます。

dim 0: data_shape[0] * data_shape[1] * ... * data_shape[axis-1]
         (or 1 if axis == 0)
dim 1: group
dim 2: data_shape[axis] / group
dim 3: data_shape[axis+1] * data_shape[axis+2] * ... * data_shape[data_shape.size()-1]
        (or 1 if axis points to last dimension)

axis の後続と先行次元は平坦化され、チャネルのシャッフル後に元の形状に再形成されます。

この操作は、形状 [N, C, H, W] および axis = 1 の入力テンソル x の次の変換と等価です。

\[\begin{split}x' = reshape(x, [N, group, C / group, H * W])\\ x'' = transpose(x', [0, 2, 1, 3])\\ y = reshape(x'', [N, C, H, W])\\\end{split}\]

ここで、group は以下で説明するレイヤー属性です。

属性:

  • axis

    • 説明: axis はチャネル次元のインデックスを指定します。

    • 値の範囲: 範囲内の整数 [-rank(data_shape), rank(data_shape) - 1]

    • タイプ: int

    • デフォルト値: 1

    • 必須: いいえ

  • group

    • 説明: group は、チャネルの次元を分割するグループ数を指定します。この数値はチャネルの次元サイズを均等に分割する必要があります。

    • 値の範囲: 範囲内の正の整数 [1, data_shape[axis]]

    • タイプ: int

    • デフォルト値: 1

    • 必須: いいえ

入力:

  • 1: タイプ T でランク 1 以上の data 入力テンソル。必須。

出力:

  • 1: 要素タイプ T および入力テンソルと同じ形状の出力テンソル。

タイプ:

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

例:

 <layer ... type="ShuffleChannels" ...>
     <data group="3" axis="1"/>
     <input>
         <port id="0">
             <dim>5</dim>
             <dim>12</dim>
             <dim>200</dim>
             <dim>400</dim>
         </port>
     </input>
     <output>
         <port id="1">
             <dim>5</dim>
             <dim>12</dim>
             <dim>200</dim>
             <dim>400</dim>
         </port>
     </output>
 </layer>