主要内容

このページは前リリースの情報です。該当の英語のページはこのリリースで削除されています。

自動並列サポートを使用したクラウドでのネットワークの学習

この例では,MATLABの並列学習の自動サポートを使用して,畳み込みニューラルネットワークに学習させる方法を説明します。多くの場合,深層学習には数時間または数日を要します。ローカルまたはクラウド内のクラスターで複数のグラフィックス処理装置(GPU)を使用して並列計算を行うことで,学習速度を向上できます。複数のGPUが搭載されたマシンにアクセスできる場合は,データのローカルコピーでこの例を実行できます。さらに多くのリソースが必要な場合は,深層学習をクラウドにスケールアップできます。並列学習のオプションの詳細については,並列およびクラウドでの深層学習のスケールアップ(深度学习工具箱)を参照してください。この例では,MATLABの自動並列サポートを使用して,クラウド上のクラスターで深層学習ネットワークに学習させる手順を説明します。

要件

この例を実行するには,クラスターを構成し,データをクラウドにアップロードしなければなりません。MATLABでは,MATLABデスクトップから直接クラウドにクラスターを作成できます。[ホーム]タブの[並列]メニューで[クラスターの作成と管理)を選択します。クラスタープロファイルマネージャーで,[クラウドクラスターの作成)をクリックします。あるいはMathWorks云中心を使用して,計算クラスターの作成およびアクセスができます。詳細については,开始与云中心を参照してください。その後,Amazon S3バケットにデータをアップロードし,MATLABから直接アクセスします。この例では,既にAmazon S3に保存されているCIFAR-10データセットのコピーを使用します。手順については,クラウドへの深層学習データのアップロード(深度学习工具箱)を参照してください。

並列プールの設定

クラスターで並列プールを起動し,ワーカー数をクラスター上のGPUの数に設定します。GPUより多くのワーカーを指定した場合,残りのワーカーはアイドルになります。この例では,使用するクラスターが既定のクラスタープロファイルとして設定されていると仮定します。既定のクラスタープロファイルは,MATLABの[ホーム]タブの[並列](既定のクラスターの選択]で確認してください。

numberOfWorkers = 8;parpool (numberOfWorkers);
使用“myclusterincloud”配置文件启动并行池(parpool)…连接8个工人。

クラウドからのデータセットの読み込み

imageDatastoreを使用して,クラウドから学習データセットおよびテストデータセットを読み込みます。この例では,Amazon S3に保存されているCIFAR-10データセットのコピーを使用します。クラウド内のデータストアへのアクセス権をワーカーが確実にもつように,AWS認証情報の環境変数が正しく設定されていることを確認してください。クラウドへの深層学習データのアップロード(深度学习工具箱)を参照してください。

imdsTrain = imageDatastore (s3: / / cifar10cloud / cifar10 /火车'...“IncludeSubfolders”,真的,...“LabelSource”“foldernames”);imdsTest = imageDatastore (s3: / / cifar10cloud / cifar10 /测试”...“IncludeSubfolders”,真的,...“LabelSource”“foldernames”);

augmentedImageDatastoreオブジェクトを作成し,拡張イメージデータを使用してネットワークに学習させます。ランダムな平行移動と水平方向の反射パターンを使用します。データ拡張は,ネットワークによる過適合と,学習イメージそのものの細部の記憶を防ぐ上で役立ちます。

imageSize = [32 32 3];pixelRange = [-4 4];imageAugmenter = imageDataAugmenter (...“RandXReflection”,真的,...“RandXTranslation”pixelRange,...“RandYTranslation”, pixelRange);imdsTrain augmentedImdsTrain = augmentedImageDatastore(图象尺寸,...“DataAugmentation”imageAugmenter,...“OutputSizeMode”“randcrop”);

ネットワークアーキテクチャと学習オプションの定義

CIFAR-10データセットのネットワークアーキテクチャを定義します。コードを簡略化するために,入力を畳み込む畳み込みブロックを使用します。プーリング層は空間次元をダウンサンプリングします。

blockDepth = 4;% blockDepth控制卷积块的深度netWidth = 32;% netWidth控制卷积块中过滤器的数量[imageInputLayer(imageSize)) convolutionalBlock(netWidth,blockDepth) maxPooling2dLayer(2,“步”2) convolutionalBlock (2 * netWidth blockDepth) maxPooling2dLayer (2“步”,2) convolutionalBlock(4*netWidth,blockDepth) average epooling2dlayer (8) fullconnectedlayer (10) softmaxLayer classificationLayer];

学習オプションを定義します。実行環境を平行に設定することで,現在のクラスターを使用して並列でネットワークに学習させます。複数のGPUを使用すると,使用できる計算リソースが増えます。各GPUの作業負荷を一定に保つには,GPUの数に応じてミニバッチサイズをスケールアップします。ミニバッチサイズに従って学習率をスケーリングします。学習率スケジュールを使用して,学習の進行に伴って学習率を下げます。学習の進行状況プロットをオンにして,学習中に視覚的フィードバックを取得します。

miniBatchSize = 256 * numberOfWorkers;initialLearnRate = 1e-1 * miniBatchSize/256;选择= trainingOptions (“个”...“ExecutionEnvironment”“平行”...%开启自动并行支持。金宝app“InitialLearnRate”initialLearnRate,...%设置初始学习速率。“MiniBatchSize”miniBatchSize,...%设置MiniBatchSize。“详细”假的,...%不发送命令行输出。“阴谋”“训练进步”...%打开训练进度图。“L2Regularization”1平台以及...“MaxEpochs”, 50岁,...“洗牌”“every-epoch”...“ValidationData”imdsTest,...“ValidationFrequency”、地板(元素个数(imdsTrain.Files) / miniBatchSize),...“LearnRateSchedule”“分段”...“LearnRateDropFactor”, 0.1,...“LearnRateDropPeriod”, 45岁);

ネットワークの学習および分類での使用

クラスター上のネットワークに学習させます。学習中はプロットに進行状況が表示されます。

净= trainNetwork (augmentedImdsTrain、层、期权)

net = SeriesNetwork属性:层:[43×1 nnet.cnn.layer.Layer]

学習済みネットワークをローカルマシンで使用してテストイメージを分類することで,ネットワークの精度を求めます。次に,予測されたラベルと実際のラベルを比較します。

YPredicted =分类(净,imdsTest);(YPredicted == imdtest . labels)/numel(imdtest . labels)

補助関数の定義

ネットワークアーキテクチャ内で畳み込みブロックを作成する関数を定義します。

函数图层= [convolution2dLayer(3,numFilters, numConvLayers)]“填充”“相同”) batchNormalizationLayer reluLayer];层= repmat(层numConvLayers 1);结束

参考

(深度学习工具箱)|(深度学习工具箱)|

関連するトピック