メインコンテンツ

embeddingConcatenationLayer

埋め込み連結層

R2023b 以降

    説明

    埋め込み連結層は、層の入力と埋め込みベクトルを連結によって結合します。

    作成

    説明

    layer = embeddingConcatenationLayer は埋め込み連結層を作成します。

    layer = embeddingConcatenationLayer(Name=Value) は、埋め込み連結層を作成し、1 つ以上の名前と値の引数を使用して、パラメーターと初期化プロパティと Name プロパティを設定します。

    プロパティ

    すべて展開する

    パラメーターと初期化

    重みを初期化する関数。次のいずれかの値として指定します。

    • "narrow-normal" — 平均 0、標準偏差 0.01 の正規分布から個別にサンプリングを行って、重みを初期化します。

    • "glorot" — Glorot 初期化子[1] (Xavier 初期化子とも呼ばれる) を使用して重みを初期化します。Glorot 初期化子は、平均 0、分散 2/(numIn + numOut) の一様分布から個別にサンプリングを行います。ここで、numInnumOut は、それぞれ層入力のチャネル数です。

    • "he" — He 初期化子[2]を使用して重みを初期化します。He 初期化子は、平均 0、分散 2/numIn の正規分布からサンプリングを行います。ここで、numIn は層入力のチャネル数です。

    • "zeros" — 0 で重みを初期化します。

    • "ones" — 1 で重みを初期化します。

    • 関数ハンドル – カスタム関数で重みを初期化します。関数ハンドルを指定する場合、関数は weights = func(sz) という形式でなければなりません。ここで、sz は重みのサイズです。

    この層では、Weights プロパティが空の場合にのみ重みが初期化されます。

    学習可能なパラメーターの重み。長さ numChannels または [] の数値列ベクトルとして指定します。

    層の重みは学習可能なパラメーターです。層の Weights プロパティを使用して、重みの初期値を直接指定できます。ネットワークに学習させるときに、層の Weights プロパティが空でない場合、trainnet 関数は Weights プロパティを初期値として使用します。Weights プロパティが空の場合、ソフトウェアは層の WeightsInitializer プロパティによって指定された初期化子を使用します。

    データ型: single | double

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

    EmbeddingConcatenationLayer オブジェクトは、このプロパティを文字ベクトルとして格納します。

    データ型: char | string

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

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

    データ型: double

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

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

    データ型: cell

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

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

    データ型: double

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

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

    データ型: cell

    すべて折りたたむ

    埋め込み連結層を作成します。

    layer = embeddingConcatenationLayer
    layer = 
      EmbeddingConcatenationLayer with properties:
    
                         Name: ''
                    InputSize: 'auto'
           WeightsInitializer: 'narrow-normal'
        WeightLearnRateFactor: 1
               WeightL2Factor: 1
    
       Learnable Parameters
                      Weights: []
    
       State Parameters
        No properties.
    
      Show all properties
    
    

    ニューラル ネットワークに埋め込み連結層を含めます。

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

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

    plot(net)
    axis off
    box off

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

    アルゴリズム

    すべて展開する

    参照

    [1] Glorot, Xavier, and Yoshua Bengio. "Understanding the Difficulty of Training Deep Feedforward Neural Networks." In Proceedings of the Thirteenth International Conference on Artificial Intelligence and Statistics, 249–356. Sardinia, Italy: AISTATS, 2010. https://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf

    [2] He, Kaiming, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. "Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification." In 2015 IEEE International Conference on Computer Vision (ICCV), 1026–34. Santiago, Chile: IEEE, 2015. https://doi.org/10.1109/ICCV.2015.123

    拡張機能

    すべて展開する

    バージョン履歴

    R2023b で導入