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>