ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

importKerasNetwork

事前学習済みの Keras ネットワークおよび重みのインポート

説明

net = importKerasNetwork(modelfile) は、事前学習済みの TensorFlow™ -Keras ネットワークとその重みを modelfile からインポートします。

この関数には、Deep Learning Toolbox™ Importer for TensorFlow -Keras Models サポート パッケージが必要です。このサポート パッケージがインストールされていない場合、関数によってダウンロード用リンクが表示されます。

net = importKerasNetwork(modelfile,Name,Value) は、1 つ以上の名前と値のペアの引数で指定された追加オプションを使用して、事前学習済みの TensorFlow -Keras ネットワークとその重みをインポートします。

たとえば、importKerasNetwork(modelfile,'WeightFile',weights) は、モデル ファイル modelfile からネットワークを、重みファイル weights から重みをインポートします。この場合、modelfile は HDF5 または JSON 形式にできます。重みファイルは HDF5 形式でなければなりません。

すべて折りたたむ

Deep Learning Toolbox Importer for TensorFlow-Keras Models サポート パッケージをダウンロードしてインストールします。

コマンド ラインで importKerasNetwork と入力します。

importKerasNetwork

Deep Learning Toolbox Importer for TensorFlow-Keras Models サポート パッケージがインストールされていない場合、関数によってアドオン エクスプローラーに必要なサポート パッケージへのリンクが表示されます。サポート パッケージをインストールするには、リンクをクリックして、[インストール] をクリックします。コマンド ラインでモデル ファイル 'digitsDAGnet.h5' からネットワークをインポートして、インストールが正常に終了していることを確認します。必要なサポート パッケージがインストールされていない場合、関数によって DAGNetwork オブジェクトが返されます。

modelfile = 'digitsDAGnet.h5';
net = importKerasNetwork(modelfile)
Warning: Saved Keras networks do not include classes. Classes
will be set to categorical(1:N), where N is the number of classes
in the classification output layer of the network.  To specify
classes, use the 'Classes' argument. 

net = 

  DAGNetwork with properties:

         Layers: [13×1 nnet.cnn.layer.Layer]
    Connections: [13×2 table]

インポートするファイルを指定します。ファイル digitsDAGnet.h5 には、数字のイメージを分類する有向非循環グラフ畳み込みニューラル ネットワークが含まれています。

modelfile = 'digitsDAGnet.h5';

ネットワークをインポートします。

net = importKerasNetwork(modelfile)
Warning: Saved Keras networks do not include classes. Classes will be set to categorical(1:N), where N is the number of classes in the classification output layer of the network.  To specify classes, use the 'Classes' argument.
net = 
  DAGNetwork with properties:

         Layers: [13×1 nnet.cnn.layer.Layer]
    Connections: [13×2 table]

ネットワーク アーキテクチャをプロットします。

figure
plot(net);
title('DAG Network Architecture')

インポートするネットワーク ファイルと重みファイルを指定します。

modelfile = 'digitsDAGnet.json';
weights = 'digitsDAGnet.weights.h5';

これは、数字データで学習させた有向非循環グラフ畳み込みニューラル ネットワークです。

ネットワーク アーキテクチャと重みを別々のファイルからインポートします。.json ファイルには、出力層、つまりコスト関数の情報がありません。ファイルをインポートするときに、出力層のタイプを指定します。

net = importKerasNetwork(modelfile,'WeightFile',weights, ...
      'OutputLayerType','classification')
Warning: Saved Keras networks do not include classes. Classes will be set to categorical(1:N), where N is the number of classes in the classification output layer of the network.  To specify classes, use the 'Classes' argument.
net = 
  DAGNetwork with properties:

         Layers: [13×1 nnet.cnn.layer.Layer]
    Connections: [13×2 table]

モデル ファイルを指定します。

modelfile = 'digitsDAGnet.h5';

クラス名を指定します。

classNames = {'0','1','2','3','4','5','6','7','8','9'};

クラス名を使用して Keras ネットワークをインポートします。

net = importKerasNetwork(modelfile,'Classes',classNames);

分類するイメージを読み取ります。

digitDatasetPath = fullfile(toolboxdir('nnet'),'nndemos','nndatasets', ...
    'DigitDataset');
I = imread(fullfile(digitDatasetPath,'5','image4009.png'));

事前学習済みのネットワークを使用してイメージを分類します。

label = classify(net,I);

イメージと分類結果を表示します。

figure
imshow(I)
title(['Classification result: ' char(label)])

入力引数

すべて折りたたむ

ネットワーク アーキテクチャと重み (場合による) が含まれるモデル ファイルの名前。文字ベクトルまたは string スカラーとして指定します。ファイルは、MATLAB® パス上のフォルダー内の現在のフォルダーに含まれていなければならず、そうでなければこのファイルの絶対パスまたは相対パスを含めなければなりません。

modelfile に含まれているものが。

  • ネットワーク アーキテクチャと重みの場合、HDF5 (.h5) 形式でなければなりません。

  • ネットワーク アーキテクチャのみの場合、HDF5 または JSON (.json) 形式にできます。

modelfile にネットワーク アーキテクチャのみが含まれる場合、名前と値のペアの引数 'WeightFile' を使用して、重みを HDF5 ファイルで指定しなければなりません。

例: 'digitsnet.h5'

データ型: char | string

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を、任意の順番で指定できます。

例: importKerasNetwork(modelfile,'OutputLayerType','classification','Classes',classes) は、モデル ファイル modelfile からネットワークをインポートし、Keras 層の最後に分類問題用の出力層を追加して、classes を出力層のクラスに指定します。

重みが含まれるファイルの名前。文字ベクトルまたは string スカラーとして指定します。WeightFile は、MATLAB パス上のフォルダー内の現在のフォルダーに含まれていなければならず、そうでなければこのファイルの絶対パスまたは相対パスを含めなければなりません。

例: 'WeightFile','weights.h5'

modelfile で損失関数が指定されていない場合に、インポートされたネットワーク アーキテクチャの最後にこの関数によって追加される出力層のタイプ。'classification''regression'、または 'pixelclassification' として指定します。pixelClassificationLayer オブジェクトを追加するには、Computer Vision Toolbox™ が必要です。

例: 'OutputLayerType','regression'

ネットワークの入力イメージのサイズ。グレースケール イメージの [height,width] またはカラー イメージの [height,width,channels] にそれぞれ対応する、2 個または 3 個の数値のベクトルとして指定します。modelfile で入力サイズが指定されていない場合、ネットワークはこの情報を使用します。

例: 'ImageInputSize',[28 28]

出力層のクラス。categorical ベクトル、string 配列、文字ベクトルの cell 配列、または 'auto' として指定します。string 配列または文字ベクトルの cell 配列 str を指定すると、出力層のクラスが categorical(str,str) に設定されます。Classes'auto' の場合、クラスは categorical(1:N) に設定されます。ここで、N はクラスの数です。

データ型: char | categorical | string | cell

出力引数

すべて折りたたむ

事前学習済みの Keras ネットワーク。次のいずれかとして返されます。

  • Keras ネットワークのタイプが Sequential の場合、netSeriesNetwork オブジェクトです。

  • Keras ネットワークのタイプが Model の場合、netDAGNetwork オブジェクトです。

ヒント

  • importKerasNetwork は Keras の層のタイプが次のとおりであるネットワークをインポートできますが、いくつかの制限があります。ネットワークに他のタイプの層が含まれる場合、エラー メッセージが返されます。ネットワーク アーキテクチャと重みのみをインポートするには、関数 importKerasLayers を使用します。

    サポートされている Keras の層

    Keras の層Deep Learning Toolbox の層
    AddadditionLayer

    Activation (活性化の名前を指定):

    • 'relu'

    • 'linear'

    • 'softmax'

    • 'sigmoid'

    • 'tanh'

    層:

    高度な活性化:

    • Softmax

    • ReLU

    • LeakyReLU

    層:

    AveragePooling2DaveragePooling2dLayer
    BatchNormalizationbatchNormalizationLayer
    Bidirectional(LSTM(__))bilstmLayer
    ConcatenatedepthConcatenationLayer
    Conv2Dconvolution2dLayer
    Conv2DTransposetransposedConv2dLayer
    DepthwiseConv2DgroupedConvolution2dLayer
    DensefullyConnectedLayer
    DropoutdropoutLayer
    EmbeddingwordEmbeddingLayer (Text Analytics Toolbox™)
    Flattennnet.keras.layer.FlattenCStyleLayer
    GlobalAveragePooling2Dnnet.keras.layer.GlobalAveragePooling2DLayer
    InputimageInputLayer
    LeakyReLUleakyReluLayer
    LSTMlstmLayer
    MaxPooling2DmaxPooling2dLayer
    SeparableConv2DgroupedConvolution2dLayer および convolution2dLayer
    ZeroPadding2Dnnet.keras.layer.ZeroPadding2DLayer

  • importKerasNetwork は、次の Keras 損失関数をサポートします。

    • mean_squared_error

    • categorical_crossentropy

    • sparse_categorical_crossentropy

    • binary_crossentropy

  • 事前学習済みのネットワークを新しいイメージの予測または転移学習に使用するには、インポートしたモデルの学習に使用したイメージに行った前処理と同じようにイメージを前処理しなければなりません。イメージのサイズ変更、平均イメージの減算、イメージの RGB 形式から BGR 形式への変換は、最も一般的な前処理演算です。

    • イメージのサイズを変更するには、imresize を使用します。たとえば、imresize(im,[227 227]) のようにします。

    • RGB 形式から BGR 形式にイメージを変換するには、flip を使用します。たとえば、flip(im,3) のようにします。

    学習および予測用のイメージの前処理の詳細は、イメージの深層学習向け前処理を参照してください。

互換性の考慮事項

すべて展開する

R2018b での開始は非推奨

参照

[1] Keras: The Python Deep Learning library. https://keras.io.

R2017b で導入