主要内容

使用自动并行支持的云中列车网络万博1manbetx

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

需求

在运行示例之前,您需要配置一个集群并将数据上传到云。在MATLAB中,您可以直接从MATLAB Desktop在云中创建集群。在首页选项卡,在平行菜单中,选择创建和管理集群.在“集群配置文件管理器”中,单击创建云集群.您也可以使用MathWorks Cloud Center创建和访问计算集群。有关更多信息,请参见开始使用云中心.在此之后,将数据上传到Amazon S3桶并直接从MATLAB访问它。本示例使用已经存储在Amazon S3中的CIFAR-10数据集的副本。有关说明,请参见将深度学习数据上传到云端

设置平行池

在集群中启动一个并行池,并将worker的数量设置为集群中的gpu数量。如果指定的worker比gpu多,那么剩下的worker都是空闲的。本示例假设您正在使用的集群被设置为默认集群配置文件。在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的数量扩大迷你批处理大小,以保持每个GPU上的工作负载不变。根据迷你批处理大小缩放学习率。使用学习率计划随着训练的进行而降低学习率。打开训练进度图,在训练过程中获得视觉反馈。

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)

定义Helper函数

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

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

另请参阅

||

相关的话题