メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

getLayer

名前またはパスによる層の参照

R2024a 以降

    説明

    layer = getLayer(net,layerName) は、layerName によって指定された層を dlnetwork オブジェクト net から返します。

    layer = getLayer(net,layerPath) は、layerPath によって指定された層を dlnetwork オブジェクト net から返します。

    すべて折りたたむ

    シンプルなネットワーク アーキテクチャを定義し、そのネットワークをプロットに表示します。

    net = dlnetwork;
    
    layers = [
        imageInputLayer([28 28])
        convolution2dLayer(3,16,Padding="same")
        reluLayer
        fullyConnectedLayer(10)
        softmaxLayer];
    
    net = addLayers(net,layers);
    
    figure
    plot(net)

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

    畳み込み層を名前で参照します。その後、getLayer 関数を使用して層を編集し、置き換えることができます。

    convLayer = getLayer(net,"conv")
    convLayer = 
      Convolution2DLayer with properties:
    
                  Name: 'conv'
    
       Hyperparameters
            FilterSize: [3 3]
           NumChannels: 'auto'
            NumFilters: 16
                Stride: [1 1]
        DilationFactor: [1 1]
           PaddingMode: 'same'
           PaddingSize: []
          PaddingValue: 0
    
       Learnable Parameters
               Weights: []
                  Bias: []
    
      Show all properties
    
    

    層のインデックスがわかっている場合は、代わりにインデックスで参照することもできます。

    convLayer = net.Layers(2);

    複数のネットワーク層を含むネットワーク アーキテクチャを定義します。

    net = dlnetwork;
    
    layers = [lstmLayer(100,OutputMode="sequence")
        dropoutLayer(0.2)];
    
    lstmDropoutLayer = networkLayer(layers);
    
    layers = [sequenceInputLayer(3)
        lstmDropoutLayer
        lstmDropoutLayer
        fullyConnectedLayer(10)
        softmaxLayer];
    
    net = addLayers(net,layers);

    ネットワークをプロットします。

    figure
    plot(net)

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

    層へのパスを指定して最初の LSTM 層を参照します。このパスには、ネットワーク層の名前 ("subnet_1") および LSTM 層の名前 ("lstm") をスラッシュで区切って含めます。このパスを使用することで、複数のネットワーク層から成る階層内で入れ子になった層を参照することができます。

    tempLSTMLayer = getLayer(net,"subnet_1/lstm");

    層のプロパティを編集し、元の層を変更後の層に置き換えます。

    tempLSTMLayer.InputWeightsInitializer = "zeros";
    tempLSTMLayer.RecurrentWeightsInitializer = "zeros";
    tempLSTMLayer.BiasInitializer = "ones";
    tempLSTMLayer.Name = "modifiedLSTM";

    ネットワーク、置き換える層へのパス、および変更後の層を指定して、元の層を変更後の層に置き換えます。

    net = replaceLayer(net,"subnet_1/lstm",tempLSTMLayer);

    入力引数

    すべて折りたたむ

    ニューラル ネットワーク。dlnetwork オブジェクトとして指定します。

    参照する層の名前。文字ベクトルまたは string スカラーとして指定します。

    例: "conv1"

    データ型: char | string

    入れ子層へのパス。文字ベクトルまたは string スカラーとして指定します。

    networkLayer 内の層については、layerPath を次のように指定します。

    • ネットワーク層の名前と入れ子層の名前は、スラッシュ "/" で区切ります。たとえば、"networkLayerName" という名前のネットワーク層にある "nestedLayerName" という名前の層へのパスは、"networkLayerName/nestedLayerName" となります。入れ子層のレベルが複数ある場合は、networkLayerName1/.../networkLayerNameN/nestedLayerName の形式でパスを指定します。

    カスタム層は、dlnetwork を学習可能なプロパティまたは状態プロパティとしてもつことができます。カスタム層のプロパティに含まれる dlnetwork の層については、layerPath を次のように指定します。

    • カスタム層の名前、dlnetwork プロパティの名前、および入れ子層の名前は、スラッシュ "/" で区切ります。たとえば、"customLayerName" という名前のカスタム層の "propertyName" という名前の dlnetwork プロパティ内にある "layerName" という名前の層へのパスは、"customLayerName/propertyName/layerName" となります。入れ子層のレベルが複数ある場合は、"customLayerName1/propertyName1/.../customLayerNameN/propertyNameN/layerName" の形式でパスを指定します。

    データ型: char | string

    バージョン履歴

    R2024a で導入