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

コード生成用の事前学習済みのネットワークの読み込み

事前学習済み畳み込みニューラル ネットワーク (CNN) のコードを生成できます。コード ジェネレーターにネットワークを提供するには、学習済みネットワークから SeriesNetwork または DAGNetwork オブジェクトを読み込みます。

coder.loadDeepLearningNetwork を使用したネットワークの読み込み

coder.loadDeepLearningNetwork を使用して、コード生成でサポートされているネットワークからネットワーク オブジェクトを読み込むことができます。ネットワークを MAT ファイルから指定できます。MAT ファイルには、読み込まれるネットワークのみが含まれていなければなりません。

たとえば、関数 trainNetwork を使用して myNet と呼ばれる事前学習済みのネットワーク オブジェクトを作成するとします。次に、「save」と入力してワークスペースを保存します。これにより、ネットワーク オブジェクトを含む matlab.mat と呼ばれるファイルが作成されます。ネットワーク オブジェクト myNet を読み込むには、次のように入力します。

net = coder.loadDeepLearningNetwork('matlab.mat');

次のような事前学習済みの SeriesNetwork または DAGNetwork オブジェクトを返す関数の名前を指定し、ネットワークを指定することもできます。

たとえば、次のように入力してネットワーク オブジェクトを読み込みます。

net = coder.loadDeepLearningNetwork('googlenet');

前述の一覧の Deep Learning Toolbox™ 関数では、その関数のサポート パッケージをインストールする必要があります。事前学習済みの深層ニューラル ネットワーク (Deep Learning Toolbox)を参照してください。

コード生成のネットワーク オブジェクトの指定

codegen またはアプリを使用してコードを生成する場合、coder.loadDeepLearningNetwork を使用してエントリポイント関数の内部でネットワーク オブジェクトを読み込みます。次に例を示します。

function out = googlenet_predict(in) %#codegen

persistent mynet;

if isempty(mynet)
    mynet = coder.loadDeepLearningNetwork('googlenet');
end
out = predict(mynet,in);

alexnetinceptionv3googlenetresnet などの一部のサポート パッケージ関数では、たとえば、mynet = googlenet を記述してそのサポート パッケージ関数を直接指定できます。

次に、エントリポイント関数のコードを生成します。次に例を示します。

cfg = coder.gpuConfig('mex');
cfg.TargetLang = 'C++';
cfg.DeepLearningConfig = coder.DeepLearningConfig('cudnn'); 
codegen -args {ones(224,224,3,'single')} -config cfg googlenet_predict

cnncodegen を使用してコードを生成する場合、MATLAB® ワークスペースにネットワーク オブジェクトを読み込みます。次に、そのオブジェクトを cnncodegen に渡します。次に例を示します。

net = squeezenet;
cnncodegen(net,'targetlib','cudnn');

参考

| | | | |

関連するトピック