Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

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: [13x1 nnet.cnn.layer.Layer]
    Connections: [13x2 table]
     InputNames: {'input_1'}
    OutputNames: {'ClassificationLayer_activation_1'}

インポートするファイルを指定します。ファイル 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: [13x1 nnet.cnn.layer.Layer]
    Connections: [13x2 table]
     InputNames: {'input_1'}
    OutputNames: {'ClassificationLayer_activation_1'}

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

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: [13x1 nnet.cnn.layer.Layer]
    Connections: [13x2 table]
     InputNames: {'input_1'}
    OutputNames: {'ClassificationLayer_activation_1'}

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

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);

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

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) オブジェクトを追加するには、Computer Vision Toolbox™ が必要です。

modelfile 内のネットワークに複数の出力がある場合、この引数を使用して出力層のタイプを指定することはできません。代わりに importKerasLayers を使用してください。importKerasLayers は、出力のプレースホルダー層を挿入します。インポートした後に、findPlaceholderLayersreplaceLayer を使用して、プレースホルダー層の検索と置換をそれぞれ行えます。

例: 'OutputLayerType','regression'

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

modelfile 内のネットワークに複数の入力がある場合、この引数を使用して入力サイズを指定することはできません。代わりに importKerasLayers を使用してください。importKerasLayers によって、入力のプレースホルダー層が挿入されます。インポートした後に、findPlaceholderLayersreplaceLayer を使用して、プレースホルダー層の検索と置換をそれぞれ行えます。

例: '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 の層対応する Deep Learning Toolbox の層
    AddadditionLayer

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

    • 'elu'

    • 'relu'

    • 'linear'

    • 'softmax'

    • 'sigmoid'

    • 'tanh'

    層:

    高度な活性化:

    • ELU

    • Softmax

    • ReLU

    • LeakyReLU

    • PReLu*

    層:

    AveragePooling2DaveragePooling2dLayer
    BatchNormalizationbatchNormalizationLayer
    Bidirectional(LSTM(__))bilstmLayer
    ConcatenatedepthConcatenationLayer
    Conv2Dconvolution2dLayer
    Conv2DTransposetransposedConv2dLayer
    CuDNNLSTMlstmLayer
    DensefullyConnectedLayer
    DepthwiseConv2DgroupedConvolution2dLayer
    DropoutdropoutLayer
    EmbeddingwordEmbeddingLayer (Text Analytics Toolbox)
    Flattennnet.keras.layer.FlattenCStyleLayer
    GlobalAveragePooling2DglobalAveragePooling2dLayer
    GlobalMaxPooling2DglobalMaxPooling2dLayer
    GRUgruLayer
    InputimageInputLayer
    LSTMlstmLayer
    MaxPooling2DmaxPooling2dLayer
    MultiplymultiplicationLayer
    SeparableConv2DgroupedConvolution2dLayer または convolution2dLayer
    UpSampling2Dresize2dLayer (Image Processing Toolbox)
    UpSampling3Dresize3dLayer (Image Processing Toolbox)
    ZeroPadding2Dnnet.keras.layer.ZeroPadding2DLayer

    *PReLU 層の場合、importKerasNetwork によって、ベクトル値のスケーリング パラメーターがベクトル要素の平均値に置き換えられます。インポートした後に、このパラメーターをベクトルに戻すことができます。例については、Keras PReLU 層のインポートを参照してください。

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

    • mean_squared_error

    • categorical_crossentropy

    • sparse_categorical_crossentropy

    • binary_crossentropy

  • 多入力多出力 (MIMO) の Keras ネットワークをインポートできます。ネットワークに、入力の入力サイズ情報および出力の損失情報が含まれている場合は、importKerasNetwork を使用します。それ以外の場合は importKerasLayers を使用します。関数 importKerasLayers は、入力と出力のプレースホルダー層を挿入します。インポートした後に、findPlaceholderLayersreplaceLayer を使用して、プレースホルダー層の検索と置換をそれぞれ行えます。MIMO Keras ネットワークをインポートするワークフローは、MIMO ONNX™ ネットワークをインポートするワークフローと同じです。例については、Import and Assemble ONNX Network with Multiple Outputsを参照してください。多入力多出力の深層学習ネットワークの詳細については、多入力および多出力ネットワークを参照してください。

  • 事前学習済みのネットワークを新しいイメージの予測または転移学習に使用するには、インポートしたモデルの学習に使用したイメージに行った前処理と同じようにイメージを前処理しなければなりません。イメージのサイズ変更、平均イメージの減算、イメージの 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 で導入