主要内容

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

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

需求

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

设置集群

选择您的云团,并开始一个平行的池,工人的数量数量设置的gpu集群。如果您指定更多的工人比gpu,然后剩下的工人闲置。

numberOfGPUs = 4;集群= parcluster (“MyClusterInTheCloud”);池= parpool(集群,numberOfGPUs);
开始平行池(parpool)使用“MyClusterInTheCloud”概要文件…连接到平行池4工人。

如果你不指定集群,集群配置文件是默认使用。检查默认集群在MATLAB上的形象选项卡,环境区域,选择平行>创建和管理集群

加载数据集从云端

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

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

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

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

定义网络结构和训练选项

CIFAR-10数据集定义一个网络体系结构。为了简化代码,使用卷积卷积模块输入。支持函数金宝appconvolutionalBlock提供的这个例子并创建重复的层块,每个包含一个卷积层,一批标准化层,和一个ReLU层。池层downsample空间维度。

blockDepth = 4;netWidth = 32;层= [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 * numberOfGPUs;initialLearnRate = 1 e 1 * miniBatchSize / 256;

指定培训选项:

  • 训练一个网络使用个解决50时代。

  • 列车网络并行使用当前集群通过设置执行环境平行

  • 使用学习速率安排学习速率随着训练的进行。

  • 使用L2正规化,防止过度拟合。

  • 设置mini-batch大小和洗牌数据每一时代。

  • 验证网络使用验证数据。

  • 打开培训进展阴谋获得视觉反馈在训练。

  • 禁用详细输出。

选择= trainingOptions (“个”,MaxEpochs = 50,ExecutionEnvironment =“平行”,InitialLearnRate = InitialLearnRate,LearnRateSchedule =“分段”,LearnRateDropFactor = 0.1,LearnRateDropPeriod = 45,L2Regularization = 1平台以及,MiniBatchSize = MiniBatchSize,洗牌=“every-epoch”,ValidationData = imdsTest,ValidationFrequency =地板(元素个数(imdsTrain.Files) / miniBatchSize),情节=“训练进步”,Verbose = false);

列车网络,用于分类

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

网= trainNetwork (augmentedImdsTrain层,选项);

使用经过训练的网络分类测试图像在本地机器上,然后将标签比较预测实际的标签。

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

近平行池如果您不打算使用一遍。

删除(池)

金宝app支持功能

卷积块功能

convolutionalBlock函数创建numConvBlocks卷积的块,每个包含一个二维卷积层,一批normmalization层,和一个ReLU层。每个二维卷积层numFilters3 x3的过滤器。

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

另请参阅

||

相关的话题