主要内容

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

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

需求

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

建立平行池

在集群中启动一个并行池,并将工作人员的数量设置为集群中的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);imdsTrain = augmentedImageDatastore(imageSize,imdsTrain,...“DataAugmentation”imageAugmenter,...“OutputSizeMode”“randcrop”);

定义网络架构和培训选项

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

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

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

miniBatchSize = 256 * numberOfWorkers;initialLearnRate = 1 -1 * miniBatchSize/256;options = 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)

图层:[43×1 nnet. cn.layer .layer]

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

yexpected = category (net,imdsTest);accuracy = sum(yexpected == imdste . labels)/numel(imdste . labels)

定义Helper函数

定义一个函数在网络体系结构中创建卷积块。

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

另请参阅

||

相关的话题