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: インデックスと同じ形状でタイプ Tper_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>