TopK¶
バージョン名: TopK-3
カテゴリー: ソートと最大化
簡単な説明: TopK は、指定された軸に沿った各スライスの k 個の最大/最小値のインデックスと値を計算します。
属性:
-
axis
説明: 値を取得する軸を指定します。
値の範囲: 整数。負の値は、次元を端から数えることを意味します。
タイプ:
int
必須: はい
-
mode
説明: 2 つの要素から最大の要素を選択するために、どの操作を使用するかを指定します。
値の範囲:
min
、max
タイプ:
string
必須: はい
-
sort
説明: 出力要素やインデックスの順序を指定します。
値の範囲:
value
、index
、none
タイプ:
string
必須: はい
-
index_element_type
説明: インデックス付きの出力テンソルのタイプ
値の範囲: “i64” または “i32”
タイプ: 文字列
デフォルト値: “i32”
必須: いいえ
入力:
1: T タイプの任意のランクのテンソル。必須。
2: k – 任意の整数タイプのスカラーは、計算される最大/最小要素の数を指定します。必須。
出力:
1: 指定された次元軸に沿った入力テンソルからの上位 k 値を持つ T タイプの出力テンソル。テンソルの形状は、
[input1.shape[0], ..., input1.shape[axis-1], k, input1.shape[axis+1], ...]
です。2: T_IND タイプの軸次元に沿った各スライスの上位 k インデックスを持つ出力テンソル。テンソルの形状は 1 番目の出力と同じです:
[input1.shape[0], ..., input1.shape[axis-1], k, input1.shape[axis+1], ...]
。
タイプ:
T: 任意の数値タイプ。
T_IND:
int64
またはint32
。
詳細説明:
出力テンソルには、次の方法で計算された値が入力されます。
output[i1, ..., i(axis-1), j, i(axis+1) ..., iN] = top_k(input[i1, ...., i(axis-1), :, i(axis+1), ..., iN]), k, sort, mode)
したがって、1D 配列を表す各スライス input[i1, ...., i(axis-1), :, i(axis+1), ..., iN]
に対して、TopK 値が個別に計算されます。
並べ替えと最小値/最大値は、sort
と mode
属性によって制御されます。
mode =
max
、sort =value
- 値による降順mode =
max
、sort =index
- インデックスによる昇順mode =
max
、sort =none
- 未定義mode =
min
、sort =value
- 値による降順mode =
min
、sort =index
- インデックスによる昇順mode =
min
、sort =none
- 未定義
同じ値を持つ要素が複数ある場合、それらの出力順序は決定されません。
例:
<layer ... type="TopK" ... >
<data axis="1" mode="max" sort="value" index_element_type="i64"/>
<input>
<port id="0">
<dim>6</dim>
<dim>12</dim>
<dim>10</dim>
<dim>24</dim>
</port>
<port id="1">
<!-- k = 3 -->
</port>
<output>
<port id="2">
<dim>6</dim>
<dim>3</dim>
<dim>10</dim>
<dim>24</dim>
</port>
<port id="3">
<dim>6</dim>
<dim>3</dim>
<dim>10</dim>
<dim>24</dim>
</port>
</output>
</layer>