メインコンテンツ

sinusoidalPositionEncodingLayer

正弦波位置符号化層

R2023b 以降

    説明

    正弦波位置符号化層は、正弦関数演算を使用して位置インデックスをベクトルにマッピングします。トランスフォーマー ニューラル ネットワークでこの層を使用して、シーケンスまたはイメージにおけるデータの位置に関する情報を提供します。

    作成

    説明

    layer = sinusoidalPositionEncodingLayer(outputSize) は、正弦波位置符号化層を作成し、OutputSize プロパティを設定します。

    layer = sinusoidalPositionEncodingLayer(outputSize,Name=Value) は、正弦波位置符号化層を作成し、1 つ以上の名前と値の引数を使用して PositionsPositionOffset、および Name の各プロパティを設定します。

    プロパティ

    すべて展開する

    正弦波位置の符号化

    この プロパティ は読み取り専用です。

    層出力のチャネル数。正の偶数として指定します。

    データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    この プロパティ は読み取り専用です。

    入力内の位置。次のいずれかの値として指定します。

    • "auto" — シーケンスまたは時空間の入力の場合、時間インデックスを位置として使用します。これは、"temporal-indices" を使用することに相当します。1 次元イメージ入力の場合、空間インデックスを位置として使用します。これは、"spatial-indices" を使用することに相当します。その他の入力の場合、入力値を位置として使用します。これは、"data-values" を使用することに相当します。

    • "temporal-indices" — 入力の時間インデックスを位置として使用します。

    • "spatial-indices" — 入力の空間インデックスを位置として使用します。

    • "data-values" — 入力の値を位置として使用します。

    状態

    R2026a 以降

    入力の位置に適用される位置のオフセット。非負の整数または [] として指定します。

    このプロパティを手動で設定した後に resetState 関数を呼び出すと、位置のオフセットがこの値に設定されます。

    データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    層の名前。文字ベクトルとして指定します。Layer 配列入力の場合、trainnet 関数および dlnetwork 関数は、名前のない層に自動的に名前を割り当てます。

    データ型: char

    この プロパティ は読み取り専用です。

    層への入力の数。1 として格納されます。この層は単一の入力のみを受け入れます。

    データ型: double

    この プロパティ は読み取り専用です。

    入力名。{'in'} として格納されます。この層は単一の入力のみを受け入れます。

    データ型: cell

    この プロパティ は読み取り専用です。

    層からの出力の数。1 として格納されます。この層には単一の出力のみがあります。

    データ型: double

    この プロパティ は読み取り専用です。

    出力名。{'out'} として格納されます。この層には単一の出力のみがあります。

    データ型: cell

    すべて折りたたむ

    出力サイズが 300 である正弦波位置符号化層を作成します。

    layer = sinusoidalPositionEncodingLayer(300)
    layer = 
      SinusoidalPositionEncodingLayer with properties:
    
                  Name: ''
            OutputSize: 300
             Positions: 'auto'
    
       Learnable Parameters
        No properties.
    
       State Parameters
        PositionOffset: []
    
      Show all properties
    
    

    正弦波位置符号化層を含むニューラル ネットワークを作成します。

    net = dlnetwork;
    
    numChannels = 1;
    
    embeddingOutputSize = 64;
    numWords = 128;
    maxPosition = 128;
    
    numHeads = 4;
    numKeyChannels = 4*embeddingOutputSize;
    
    layers = [ 
        sequenceInputLayer(numChannels,Name="input")
        wordEmbeddingLayer(embeddingOutputSize,numWords,Name="word-emb")
        sinusoidalPositionEncodingLayer(embeddingOutputSize,Name="pos-enc");
        additionLayer(2,Name="add")
        selfAttentionLayer(numHeads,numKeyChannels,AttentionMask="causal")
        fullyConnectedLayer(numWords)
        softmaxLayer];
    
    net = addLayers(net,layers);
    
    net = connectLayers(net,"word-emb","add/in2");

    ニューラル ネットワーク アーキテクチャを表示します。

    plot(net)
    axis off
    box off

    Figure contains an axes object. The hidden axes object contains an object of type graphplot.

    アルゴリズム

    すべて展開する

    参照

    [1] Vaswani, Ashish, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Łukasz Kaiser, and Illia Polosukhin. "Attention is all you need." In Advances in Neural Information Processing Systems, Vol. 30. Curran Associates, Inc., 2017. https://papers.nips.cc/paper_files/paper/2017/hash/3f5ee243547dee91fbd053c1c4a845aa-Abstract.html.

    バージョン履歴

    R2023b で導入

    すべて展開する