Main Content

assembleNetwork

(非推奨) 事前学習済みの層から深層学習ネットワークを組み立てる

関数 assembleNetwork は推奨されません。代わりに、dlnetwork オブジェクトを使用してください。詳細については、バージョン履歴を参照してください。

ネットワークにゼロから学習させるには、関数 trainnet を使用します。

説明

assembledNet = assembleNetwork(layers) は、層配列または層グラフ layers を使用して予測の準備が整った深層学習ネットワークを組み立てます。

すべて折りたたむ

学習を実行せずに、事前学習済みの層からニューラル ネットワークを組み立てます。

単純な LSTM ネットワークを定義します。

numChannels = 3;
numHiddenUnits = 100;
numClasses = 10;

layers = [
    sequenceInputLayer(numChannels)
    lstmLayer(numHiddenUnits,OutputMode="last")
    fullyConnectedLayer(numClasses)
    softmaxLayer
    classificationLayer];

ネットワーク内の学習可能な層については、学習可能なパラメーターに対応するプロパティを手動で設定します。MAT ファイルなどの外部ソースから、パラメーターのインポートまたは読み込みを行うことができます。説明をわかりやすくするために、この例では学習可能なパラメーターを乱数値に設定します。

layers(2).InputWeights = rand(4*numHiddenUnits,numChannels);
layers(2).RecurrentWeights = rand(4*numHiddenUnits,numHiddenUnits);
layers(2).Bias = rand(4*numHiddenUnits,1);

layers(3).Weights = rand(numClasses,numHiddenUnits);
layers(3).Bias = rand(numClasses,1);

分類出力層の Classes プロパティを設定します。

classNames = string(1:10);
layers(5).Classes = classNames;

関数 assembleNetwork を使用してネットワークを組み立てます。出力ネットワークは、予測に使用する準備が整った SeriesNetwork オブジェクトです。

net = assembleNetwork(layers)
net = 

  SeriesNetwork with properties:

         Layers: [5×1 nnet.cnn.layer.Layer]
     InputNames: {'sequenceinput'}
    OutputNames: {'classoutput'}

入力引数

すべて折りたたむ

ニューラル ネットワーク層。Layer 配列または LayerGraph オブジェクトとして指定します。

すべての層が順に結合されたニューラル ネットワークを作成する場合、Layer 配列を入力引数として使用できます。この場合、返されるニューラル ネットワークは、SeriesNetwork オブジェクトになります。

有向非循環グラフ (DAG) ニューラル ネットワークは複雑な構造を持ち、層は複数の入出力を持てます。DAG ニューラル ネットワークを作成するには、ニューラル ネットワーク アーキテクチャを LayerGraph オブジェクトとして指定して、その層グラフを assembleNetwork の入力引数として使用します。

関数 assembleNetwork は、最大で 1 つのシーケンス入力層をもつニューラル ネットワークをサポートします。

組み込み層の一覧については、深層学習層の一覧を参照してください。

出力引数

すべて折りたたむ

予測の準備が整った組み立て済みネットワーク。SeriesNetwork オブジェクトまたは DAGNetwork オブジェクトとして返されます。返されるネットワークは、入力引数 layers によって異なります。

  • layers が配列 Layer の場合、assembledNetSeriesNetwork オブジェクトになります。

  • layersLayerGraph オブジェクトの場合、assembledNetDAGNetwork オブジェクトになります。

バージョン履歴

R2018b で導入

すべて折りたたむ

R2024a: 非推奨

assembleNetwork は推奨されません。代わりに、dlnetwork オブジェクトを使用してください。

関数 assembleNetwork は、SeriesNetwork オブジェクトと DAGNetwork オブジェクトを返しますが、これらは推奨されません。関数 assembleNetwork のサポートを削除する予定はありません。ただし、dlnetwork オブジェクトを代わりに使用することが推奨されており、次のような利点があります。

  • dlnetwork オブジェクトは、ネットワークの構築、予測、組み込み学習、可視化、圧縮、検証、およびカスタム学習ループをサポートする統合されたデータ型です。

  • dlnetwork オブジェクトは、ユーザーが作成したり外部のプラットフォームからインポートしたりできる、さまざまなネットワーク アーキテクチャをサポートしています。

  • 関数 trainnetdlnetwork オブジェクトをサポートしているため、損失関数を簡単に指定できます。組み込みの損失関数を選択するか、カスタム損失関数を指定できます。

  • dlnetwork オブジェクトを使用した学習と予測は、通常、LayerGraphtrainNetwork を使用したワークフローよりも高速です。

dlnetwork オブジェクトを使用するようにコードを更新するには、次のいずれかの方法を使用します。

非推奨推奨
層配列または層グラフを使用し、SeriesNetwork オブジェクトまたは DAGNetwork オブジェクトを組み立てる。出力層を含めずに、dlnetwork オブジェクトを直接構築する。LayerGraph オブジェクトをサポートするほとんどの関数は、dlnetwork オブジェクトもサポートします。ネットワークを初期化するには、関数 initialize を使用します。
関数 importKerasLayersimportTensorFlowLayers、または importONNXLayers によって返されるインポート済みネットワークを組み立てる。関数 importNetworkFromTensorFlow または importNetworkFromONNX を使用してネットワークをインポートする。