主要内容

使用自动并行支持在云中训练网络万博1manbetx

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

需求

在运行示例之前,需要配置集群并将数据上传到云。在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/train”,...“IncludeSubfolders”符合事实的...“LabelSource”,“foldernames”);imdsTest = imageDatastore (s3: / / cifar10cloud / cifar10 /测试”,...“IncludeSubfolders”符合事实的...“LabelSource”,“foldernames”);

通过创建一个增强图像数据存储对象。使用随机平移和水平反射。数据增强有助于防止网络过度拟合和记忆训练图像的确切细节。

imageSize=[32 32 3];pixelRange=[-4];imageAugmenter=imageDataAugmenter(...“RandXReflection”符合事实的...“RandXTranslation”,像素范围,...“RandYTranslation”, pixelRange);imdsTrain augmentedImdsTrain = augmentedImageDatastore(图象尺寸,...“数据增强”,影像增强器,...“OutputSizeMode”,“randcrop”);

定义网络架构和培训选项

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

块深度=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;选项=培训选项(“个”,...“执行环境”,“平行”,...开启自动并行支持。万博1manbetx“初始学习率”,initialLearnRate,...%设置初始学习速率。“MiniBatchSize”miniBatchSize,...%设置MiniBatchSize。“详细”假的,...%不发送命令行输出。“情节”,“培训进度”,...%打开“训练进度”绘图。“L2规范化”,1e-10,...“MaxEpochs”, 50岁,...“洗牌”,“every-epoch”,...“ValidationData”,imdsTest,...“ValidationFrequency”、地板(元素个数(imdsTrain.Files) / miniBatchSize),...“LearnRateSchedule”,“分段”,...“LearnRateDropFactor”,0.1,...“LearnRateDropPeriod”,45);

训练网络和分类使用

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

net=列车网络(增强、层、选项)

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

另见

||

相关的话题