EmbeddingBagPackedSum¶
バージョン名: EmbeddingBagPackedSum-3
カテゴリー: スパース
簡単な説明: 中間の埋め込みをインスタンス化せずに、埋め込みの “バッグ” の合計を計算します。
詳細説明: これは PyTorch EmbeddingBag の最初のケースであり、[batch, indices_per_bag]
形式のテンソルのインデックスを持っています。3 番目の入力が指定されていない場合、この操作は、Gather の後に ReduceSum(axis=0) が続くことと同等です。ただし、EmbeddingBagPackedSum は、これらの一連の操作を行うよりも時間とメモリーの効率が大幅に向上します。
属性: EmbeddingBagPackedSum 操作には属性がありません。
入力:
1: 形状
[num_emb, emb_dim1, emb_dim2, ...]
およびタイプ T のモジュールの埋め込みルックアップ・テーブルを含むemb_table
テンソル。必須。2: 形状
[batch, indices_per_bag]
およびタイプ T_IND のインデックス・テンソル。必須。3: インデックスと同じ形状でタイプ T の
per_sample_weights
テンソル。このテンソルの各値は、各インデックスの埋め込みテーブルからプールされた各値と乗算されます。オプション。デフォルトは 1 のテンソルです。
出力:
1: 形状
[batch, emb_dim1, emb_dim2, ...]
および各バッグの埋め込みを含むタイプ T のテンソル。
タイプ:
T: 任意の数値タイプ。
T_IND:
int32
またはint64
。
例:
<layer ... type="EmbeddingBagPackedSum" ... >
<input>
<port id="0"> <!-- emb_table value is: [[-0.2, -0.6], [-0.1, -0.4], [-1.9, -1.8], [-1., 1.5], [ 0.8, -0.7]] -->
<dim>5</dim>
<dim>2</dim>
</port>
<port id="1"> <!-- indices value is: [[0, 2], [1, 2], [3, 4]] -->
<dim>3</dim>
<dim>2</dim>
</port>
<port id="2"/> <!-- per_sample_weigths value is: [[0.5, 0.5], [0.5, 0.5], [0.5, 0.5]] -->
<dim>3</dim>
<dim>2</dim>
</port>
</input>
<output>
<port id="4"> <!-- output value is: [[-1.05, -1.2], [-1., -1.1], [-0.1, 0.4]] -->
<dim>3</dim>
<dim>2</dim>
</port>
</output>
</layer>