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

此示例示出了如何训练使用MATLAB并行训练自动支持的卷积神经网络。万博1manbetx深学习培训往往需要数小时或数天。与并行计算,则可以使用多个图形处理单元(GPU)本地或在云簇加速训练。如果你有机会获得多GPU的机器,那么你可以对数据的本地副本,完成这个例子。如果您想使用更多的资源,那么你可以扩展深度学习培训到云中。要了解更多关于您的选项并行训练,看规模达深学习并行和云(深学习工具箱)。这个例子引导您完成训练了深刻的学习网络中的集群中使用MATLAB自动并行支持云计算。万博1manbetx

要求

在可以运行的例子,你需要配置群集和上传数据到云中。在MATLAB中,你可以创建直接从MATLAB桌面的云团。在选项卡,在平行菜单中选择创建和管理集群。在群集配置文件管理器,单击创建云团。另外,您也可以使用MathWorks的云计算中心来创建和访问计算集群。欲了解更多信息,请参阅开始使用云计算中心。在此之后,上传数据到Amazon S3的桶直接从MATLAB访问它。本示例使用已经存储在亚马逊S3的CIFAR-10的数据集的副本。有关说明,请参阅上传深入学习数据到云(深学习工具箱)。

建立并行池

启动集群中的并行池和工人数量设置为集群中的GPU的数量。如果指定的GPU更多的工人,那么剩下的工人处于闲置状态。这个例子假设您正在使用的集群设置为默认群集配置文件。检查的MATLAB默认的群集配置文件选项卡,在平行>选择一个默认的集群

numberOfWorkers = 8;parpool(numberOfWorkers);
开始使用“MyClusterInTheCloud的个人资料...连接到8名工人并行池(parpool)。

从云中加载数据集

使用来自云加载训练和测试数据集imageDatastore。在这个例子中,您使用CIFAR-10数据的副本集存储在亚马逊S3。为了保证工人能够在云中的数据存储,确保为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 = augmentedImageDatastore(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('SGDM'...“执行环境”'平行'...%打开自动平行支撑。万博1manbetx'InitialLearnRate',initialLearnRate,...%设定初始学习率。'MiniBatchSize',miniBatchSize,...%设置MiniBatchSize。“放牧”,假,...%不发送命令行输出。“情节”“训练进度”...%打开的训练进度情节。'L2Regularization',1E-10,...'MaxEpochs'50,...“洗牌”“每个历元”...'ValidationData',imdsTest,...'ValidationFrequency',地板(numel(imdsTrain.Files)/ miniBatchSize),...'LearnRateSchedule'“分段”...'LearnRateDropFactor',0.1%,...'LearnRateDropPeriod',45);

列车网络和使用分类

训练网络的群集。在培训过程中,该图显示的进展。

净= trainNetwork(augmentedImdsTrain,层,选项)

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

确定网络的精度,通过训练的网络到本地计算机上的测试图像进​​行分类。那么预测的标签与实际的标签。

YPredicted =分类(净,imdsTest);精度=总和(YPredicted == imdsTest.Labels)/ numel(imdsTest.Labels)

定义辅助函数

定义一个函数来创建在所述网络体系结构的卷积块。

功能层= convolutionalBlock(numFilters,numConvLayers)层= [convolution2dLayer(3,numFilters,'填充''相同')batchNormalizationLayer reluLayer];层= repmat(层,numConvLayers,1);结束

也可以看看

||

相关话题