自動並列サポ,トを使用したクラウドでのネットワ,クの学習
この例では,並列学習用のMATLABの自動サポートを使用して畳み込みニューラルネットワークに学習させる方法を説明します。多くの場合,深層学習における学習には数時間または数日かかります。並列計算を使用すると,複数のグラフィックス処理装置(GPU)をローカルで,またはクラウドのクラスターで使用して,学習を高速化できます。複数の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);augmentedImdsTrain = augmentedimagedastore (imageSize,imdsTrain,...“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) averagePooling2dLayer(8) fullyConnectedLayer(10) softmaxLayer classificationLayer];
学習オプションを定義します。実行環境を平行
に設定して,現在のクラスタ,を使用してネットワ,クの並列学習を行います。複数のgpuを使用する場合,利用可能な計算リソ,スを増やします。Gpuの数でミニバッチサaapl . aapl . aapl . aapl . aapl . aapl . aapl。ミニバッチサ▪▪ズに応じて学習率をスケ▪▪リングします。学習率のスケジュ,ルを使用して,学習の進行に応じて学習率を下げます。学習の進行状況プロットをオンにして,学習中に,可視化されたフィ,ドバックを取得します。
miniBatchSize = 256 * numberOfWorkers;initialLearnRate = 1e-1 * miniBatchSize/256;选项= trainingOptions(“个”,...“ExecutionEnvironment”,“平行”,...打开自动并行支持。万博1manbetx“InitialLearnRate”initialLearnRate,...%设置初始学习率。“MiniBatchSize”miniBatchSize,...设置MiniBatchSize。“详细”假的,...不发送命令行输出。“阴谋”,“训练进步”,...打开训练进度图。“L2Regularization”1平台以及...“MaxEpochs”, 50岁,...“洗牌”,“every-epoch”,...“ValidationData”imdsTest,...“ValidationFrequency”、地板(元素个数(imdsTrain.Files) / miniBatchSize),...“LearnRateSchedule”,“分段”,...“LearnRateDropFactor”, 0.1,...“LearnRateDropPeriod”, 45岁);
ネットワ,クの学習と分類での使用
クラスタ,でネットワ,クに学習させます。学習中に進行状況のプロットが表示されます。
net = trainNetwork(augmentedImdsTrain,layers,options)
net = SeriesNetwork with properties: Layers: [43×1 nnet.cnn.layer.Layer]
学習済みネットワークを使用してローカルマシン上でテストイメージを分類し,ネットワークの精度を判断します。次に,予測ラベルを実際のラベルと比較します。
ypredict = category (net,imdsTest);accuracy = sum(ypredict == imdsTest.Labels)/numel(imdsTest.Labels)
補助関数の定義
ネットワ,クア,キテクチャで畳み込みブロックを作成する関数を定義します。
函数layers = [convolution2dLayer(3,numFilters, numConvLayers)“填充”,“相同”) batchNormalizationLayer reluLayer;layers = repmat(layers,numConvLayers,1);结束
参考
trainNetwork
|trainingOptions
|imageDatastore