主要内容

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

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

需求

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

建立了平行池

集群中启动一个平行池和工人的数量在集群gpu的数量。如果您指定更多的工人比gpu,然后剩下的工人闲置。这个示例假设您正在使用的集群是集群设置为默认概要文件。检查默认集群在MATLAB上的形象选项卡,在平行>选择一个默认的集群

numberOfWorkers = 8;parpool (numberOfWorkers);
开始平行池(parpool)使用“MyClusterInTheCloud”概要文件…连接到8工人。

加载数据集从云端

负荷训练和测试数据集从云端imageDatastore。在本例中,您使用的一个副本CIFAR-10存储在Amazon S3数据集。确保人员访问数据存储在云端,确保AWS凭证正确设置环境变量。看到深度学习的数据上传到云

imdsTrain = imageDatastore (s3: / / cifar10cloud / cifar10 /火车',“IncludeSubfolders”,真的,“LabelSource”,“foldernames”);imdsTest = imageDatastore (s3: / / cifar10cloud / cifar10 /测试”,“IncludeSubfolders”,真的,“LabelSource”,“foldernames”);

培养和增强图像数据通过建立一个网络augmentedImageDatastore对象。使用随机翻译和水平的反映。数据增加有助于防止网络过度拟合和记忆的训练图像的细节。

图象尺寸= [32 32 3];pixelRange = 4 [4];imageAugmenter = imageDataAugmenter (“RandXReflection”,真的,“RandXTranslation”pixelRange,“RandYTranslation”,pixelRange);imdsTrain augmentedImdsTrain = augmentedImageDatastore(图象尺寸,“DataAugmentation”imageAugmenter,“OutputSizeMode”,“randcrop”);

定义网络结构和训练选项

CIFAR-10数据集定义一个网络体系结构。为了简化代码,使用卷积卷积模块输入。池层downsample空间维度。

blockDepth = 4;% blockDepth控制一个回旋的块的深度netWidth = 32;% netWidth控制过滤器在一个回旋的块的数量层= [imageInputLayer(图象尺寸)convolutionalBlock netWidth, blockDepth maxPooling2dLayer (2“步”2)convolutionalBlock (2 * netWidth blockDepth) maxPooling2dLayer (2“步”2)convolutionalBlock (4 * netWidth blockDepth) averagePooling2dLayer (8) fullyConnectedLayer (10) softmaxLayer classificationLayer];

定义培训选项。列车网络并行使用当前集群,通过设置执行环境平行。当你使用多个gpu,增加可用的计算资源。扩大mini-batch大小与GPU的数量保持每个GPU的工作负载恒定。根据mini-batch学习速率的大小。使用学习速率安排学习速率随着训练的进行。打开培训进展阴谋获得视觉反馈在训练。

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

列车网络,用于分类

列车网络集群中。在培训期间,情节显示进展。

净= trainNetwork (augmentedImdsTrain、层、期权)

网= SeriesNetwork属性:层:[43×1 nnet.cnn.layer.Layer]

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

YPredicted =分类(净,imdsTest);精度= (YPredicted = = imdsTest.Labels) /元素个数之和(imdsTest.Labels)

定义辅助函数

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

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

另请参阅

||

相关的话题