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>