主要内容

使用自动并行支持云中的火车网络金宝app

此示例显示如何使用MATLAB自动支持训练卷积神经网络进行并行培训。金宝app深度学习培训通常需要数小时或几天。通过并行计算,您可以在本地使用多个图形处理单元(GPU)或在云中的群集中加速培训。如果您可以访问具有多个GPU的机器,则可以在数据的本地副本上完成此示例。如果您想使用更多资源,那么您可以向云扩展深入学习培训。要了解有关并行培训选项的更多信息,请参阅平行和云中的深度学习.此示例指导您通过使用MATLAB自动并行支持,通过步骤指导云中培训深度学习网络的步骤。金宝app

需求

在运行示例之前,需要配置集群并将数据上传到云。在MATLAB中,您可以直接从MATLAB桌面在云中创建集群。在选项卡,平行菜单,选择创建和管理群集.在集群配置文件管理器中,单击创建云集群.或者,您可以使用MathWorks Cloud Center来创建和访问计算集群。有关更多信息,请参见云中心入门.之后,将数据上传到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');

通过创建一个通过增强图像数据列车AugmentedimageGedataStore.目的。使用随机翻译和水平反射。数据增强有助于防止网络过度接收和记忆培训图像的确切细节。

图像_ [32 32 3];PIXELRANGE = [-4 4];imageaugmenter = imagedataAugmenter(......“RandXReflection”,真的,......“RandXTranslation”,pixelrange,......“RandYTranslation”, pixelRange);imdsTrain augmentedImdsTrain = augmentedImageDatastore(图象尺寸,......'dataaugmentation',imageaugmender,......'outputsizeMode'“randcrop”);

定义网络架构和培训选项

为CIFAR-10数据集定义一个网络架构。为了简化代码,可以使用卷积块对输入进行卷积。池化层向下采样空间维度。

BlockDepth = 4;%blockdepth控制卷积块的深度NetWidth = 32;%NetWidth控制卷积块中的过滤器数量[imageInputLayer(imageSize)卷积块(netWidth,blockDepth) maxPooling2dLayer(2,'走吧'2) convolutionalBlock (2 * netWidth blockDepth) maxPooling2dLayer (2'走吧',2) convolutionalBlock(4*netWidth,blockDepth) averageepooling2dlayer (8) fulllyconnectedlayer (10) softmaxLayer classificationLayer;

定义培训选项。通过将执行环境设置为,使用当前集群并行训练网络平行.当您使用多个gpu时,您将增加可用的计算资源。根据GPU的数量扩大迷你批处理的大小,以保持每个GPU上的工作负载不变。根据小批量的大小缩放学习率。使用学习率计划,随着训练的进行降低学习率。在训练过程中打开训练进度图,获取视觉反馈。

minibatchsize = 256 * numberofworkers;InitialLearnrate = 1E-1 * MINIBATCHSIZE / 256;选项=培训选项(“个”......'executionenvironment''平行线'......开启自动并行支持。金宝app'italllearnrate',initiallearnrate,......%设置初始学习率。'minibatchsize'miniBatchSize,......%设置小匹匹匹匹配。“详细”假的,......%不发送命令行输出。'plots''培训 - 进步'......%打开训练进度情节。'L2Regularization',1E-10,......'maxepochs', 50岁,......'洗牌'“every-epoch”......“ValidationData”,Indstest,......“ValidationFrequency”、地板(元素个数(imdsTrain.Files) / miniBatchSize),......“LearnRateSchedule”'分段'......'学习ropfactor',0.1,......'学习ropperiod',45);

训练网络和分类使用

在群集中培训网络。在培训期间,绘图显示进度。

net = trainnetwork(Augmentedimdstrain,图层,选项)

net =具有属性的串行网络:图层:[43×1 nnet.cnn.layer.layer]

通过使用经过训练的网络对本地机器上的测试图像进行分类,确定网络的准确性。然后比较预测的标签和实际的标签。

YPredicted =分类(净,imdsTest);精度= sum(YPredicted == imdsTest.Labels)/numel(imdsTest.Labels)

定义辅助函数

定义在网络架构中创建卷积块的函数。

函数图层=卷积块(NumFilters,NumConvlayers)图层= [卷积2dlayer(3,numfilters,'填充'“相同”) batchNormalizationLayer reluLayer];层= repmat(层numConvLayers 1);结尾

也可以看看

||

相关的话题