OneHot

バージョン名: OneHot-1

カテゴリー: シーケンス処理

簡単な説明: OneHot は、指定されたインデックスを持つ出力テンソルの要素を on_value に設定し、他のすべての位置を off_value で埋めます。

詳細説明:

OneHot は、最初の入力 indices としてランク N のテンソルを取得し、軸位置の新しい次元で元のテンソルを拡張してランク N+1 のテンソルを生成します。出力テンソルには、3 番目の入力からの on_value と 4 番目の入力からの off_value の 2 つのスカラー値が入力されます。総数は次のようにして作成されます。

output[:, ... ,:, i, :, ... ,:] = on_value if (indices[:, ..., :, :, ..., :] == i) else off_value

ここで、ioutput 形状の axis 位置にあり、[0, ..., depth-1] の範囲の値を保持します。

indices の一部の要素が depth 以上である場合、それは適切な形式の操作です。この場合、対応する出力行には off_value が設定されます。

入力スカラーの on_valueoff_value のタイプは、サポートされているタイプと一致し等しくなければなりません。出力テンソルのタイプは on_value または off_value から派生し、すべて同じタイプを持ちます。

属性:

  • axis

    • 説明: axis は、ワンホット値を入力する出力形状内の新しい軸の位置です。

    • 値の範囲: 整数。負の値は、次元を端から数えることを意味します。

    • タイプ: int

    • 必須: はい

入力:

  • 1: indices: 負ではないインデックスを持つ T1 タイプの入力テンソル、負のインデックスの動作は未定義です。0D でも構いません。必須。

  • 2: depth: クラスの数、つまりワンホット次元のサイズを指定する T1 タイプの正のスカラー (0D テンソル)。必須。

  • 3: on_value: indices で指定された出力テンソルの位置を埋める T2 タイプのスカラー (0D テンソル)。必須。

  • 4: off_value: indices で表されない位置を埋める T2 タイプのスカラー (0D テンソル)。必須。

出力:

  • 1: T2 タイプの N+1 ランクのテンソル。N は入力テンソル indices のランクです。サイズ depth の新しい軸が次元 axis に挿入されます。

タイプ:

  • T1: int32 または int64

  • T2: サポートされている任意のデータタイプ。

例:

 <layer ... type="OneHot" ...>
     <data axis="-1"/>
     <input>
         <port id="0">    <!-- indices value: [0, 3, 1, 2] -->
             <dim>4</dim>
         </port>
         <port id="1">    <!-- depth value: 3 -->
         </port>
         <port id="2">    <!-- on_value 1 -->
         </port>
         <port id="3">    <!-- off_value 2 -->
         </port>
     </input>
     <output>
         <port id="0">    <!-- output value # [[1, 2, 2], [2, 2, 2], [2, 1, 2], [2, 2, 1]] -->
             <dim>4</dim>
             <dim>3</dim>
         </port>
     </output>
 </layer>
 <layer ... type="OneHot" ...>
     <data axis="1"/>
     <input>
         <port id="0">    <!-- indices value: [[0, 3, 1], [1, 2, 4]] -->
             <dim>2</dim>
             <dim>3</dim>
         </port>
         <port id="1">    <!-- depth value: 3 -->
         </port>
         <port id="2">    <!-- on_value 1 -->
         </port>
         <port id="3">    <!-- off_value 0 -->
         </port>
     </input>
     <output>
         <port id="0">    <!-- output value: [[[1, 0, 0], [0, 0, 1], [0, 0, 0]], -->
             <dim>2</dim> <!--                [[0, 0, 0], [1, 0, 0], [0, 1, 0]]] -->
             <dim>3</dim>
             <dim>3</dim>
         </port>
     </output>
 </layer>