VariadicSplit¶
バージョン名: VariadicSplit-1
カテゴリー: データ移動
簡単な説明: VariadicSplit 操作は、入力テンソルを何らかの軸に沿ってチャンクに分割します。チャンクは、split_lengths
入力テンソルに応じて可変長を持つ場合があります。
詳細説明:
VariadicSplit 操作は、指定された入力テンソル data を、[1]
axis
を持つスカラーまたはテンソルに沿ってチャンクに分割します。追加の入力テンソルの split_lengths
に基づいて複数の出力テンソルを生成します。i 番目の出力テンソル形状は、split_lengths[i]
である axis に沿った次元を除き、入力テンソル data 形状と等しくなります。
ここで、D は入力テンソル data のランクです。split_lengths
の要素の合計は data.shape[axis]
と一致する必要があります。
属性: VariadicSplit 操作には属性がありません。
入力:
1:
data
。タイプ T1 の任意の形状のテンソル。必須。2:
axis
。分割するdata
に沿った軸。範囲-rank(data) .. rank(data)-1
の値を持つT2
タイプの形状[1]
を持つスカラーまたはテンソル。負の値は終端からの次元を指定します。必須。3:
split_lengths
。分割axis
に沿った各出力テンソル形状の次元値を含むリスト。タイプT2
の 1D テンソル。split_lengths
の要素数によって出力数が決まります。split_lengths
の要素の合計はdata.shape[axis]
と一致する必要があります。さらに、split_lengths
には単一の-1
要素を含めることができます。これは、他の部分によって消費されない、指定されたaxis
に沿った残りの項目すべてを意味します。必須。
出力:
複数の出力:
T1
タイプのテンソル。i 番目の出力は、split_lengths[i] != -1
の場合、split_lengths[i]
であるaxis
に沿った次元を除いて、data 入力テンソルと同じ形状を持ちます。それ以外は、axis
に沿った次元は、split_lengths
入力で説明されているように処理されます。
タイプ:
T1: サポートされている任意のタイプ。
T2: 任意の整数タイプ。
例:
<layer id="1" type="VariadicSplit" ...>
<input>
<port id="0"> <!-- some data -->
<dim>6</dim>
<dim>12</dim>
<dim>10</dim>
<dim>24</dim>
</port>
<port id="1"> <!-- axis: 0 -->
</port>
<port id="2">
<dim>3</dim> <!-- split_lengths: [1, 2, 3] -->
</port>
</input>
<output>
<port id="3">
<dim>1</dim>
<dim>12</dim>
<dim>10</dim>
<dim>24</dim>
</port>
<port id="4">
<dim>2</dim>
<dim>12</dim>
<dim>10</dim>
<dim>24</dim>
</port>
<port id="5">
<dim>3</dim>
<dim>12</dim>
<dim>10</dim>
<dim>24</dim>
</port>
</output>
</layer>
<layer id="1" type="VariadicSplit" ...>
<input>
<port id="0"> <!-- some data -->
<dim>6</dim>
<dim>12</dim>
<dim>10</dim>
<dim>24</dim>
</port>
<port id="1"> <!-- axis: 0 -->
</port>
<port id="2">
<dim>2</dim> <!-- split_lengths: [-1, 2] -->
</port>
</input>
<output>
<port id="3">
<dim>4</dim> <!-- 4 = 6 - 2 -->
<dim>12</dim>
<dim>10</dim>
<dim>24</dim>
</port>
<port id="4">
<dim>2</dim>
<dim>12</dim>
<dim>10</dim>
<dim>24</dim>
</port>
</output>
</layer>