主要内容

使用自动并行支持在云中训练网络金宝app

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

要求

在运行该示例之前,您需要将群集配置到云端上传数据。在MATLAB中,您可以直接从MATLAB桌面创建云中的群集。在这一点首页标签,在平行线菜单中,选择创建和管理集群.在集群配置文件管理器中,单击创建云计算集群.或者,您可以使用MathWorks云中心来创建和访问计算群集。有关更多信息,请参阅云中心入门.之后,将数据上传到Amazon S3桶,并直接从MATLAB访问它。本示例使用已经存储在Amazon S3中的CIFAR-10数据集的副本。说明,请参阅上传深度学习数据到云(深度学习工具箱)

设置并行池

在集群中启动一个并行池,并将工作人员的数量设置为集群中的gpu数量。如果指定的worker多于gpu,那么剩余的worker将处于空闲状态。本例假设您使用的集群被设置为默认集群配置文件。检查MATLAB上的默认集群配置文件首页标签,in.平行线>选择默认集群

numberofworkers = 8;parpool(numberofworkers);
使用“myclusterinthecloud”配置文件启动并行池(Parpool)...连接到8名工人。

从云加载数据集

使用。从云加载训练和测试数据集imageageAtastore..在此示例中,您可以使用存储在Amazon S3中的CIFAR-10数据集的副本。为了确保工人可以访问云中的数据存储,请确保正确设置AWS凭据的环境变量。看上传深度学习数据到云(深度学习工具箱)

imdstrain = imagedataStore(s3: / / cifar10cloud / cifar10 /火车'...'insertumbfolders',真的,...'labelsource'“foldernames”);imdstest = imageageataStore('s3:// cifar10cloud / cifar10 / test'...'insertumbfolders',真的,...'labelsource'“foldernames”);

通过创建一个增强的图像数据来训练网络augmentedImageDatastore对象。使用随机平移和水平反射。数据增强有助于防止网络过度拟合和记忆训练图像的确切细节。

imageSize = [32 32 3];pixelRange = [-4 4];imageAugmenter = imageDataAugmenter (...'randxreflection',真的,...'randxtranslation'pixelRange,...'randytranslation',pixelrange);Augmentedimdstrain = AugmentedimageGedataStore(图像化,IMDstrain,...“DataAugmentation”imageAugmenter,...“OutputSizeMode”'randcrop');

定义网络架构和培训选项

定义CIFAR-10数据集的网络架构。为简化代码,请使用卷积卷积的卷积块。汇集层向下采样空间尺寸。

blockDepth = 4;% blockDepth控制卷积块的深度netWidth = 32;% netWidth控制卷积块中过滤器的数量图层= [imageInputlayer(iconageize)卷积块(netwidth,blockdepth)maxpooling2dlayer(2,“步”,2)卷大布(2 * NetWidth,BlockDepth)MaxPooling2Dlayer(2,“步”,2)卷积块(4 * NetWidth,BlockDepth)普通Pooling2dlayer(8)全连接列(10)SoftmaxLayer分类层];

定义培训选项。使用当前群集并行列车通过将执行环境设置为平行线.使用多个GPU时,可以增加可用的计算资源。扩大迷你批量大小,使用GPU的数量保持在每个GPU常数上的工作负载。根据迷你批量尺寸缩放学习率。使用学习率计划将学习率降低,因为培训进展。打开培训进度策划,以获得培训期间的视觉反馈。

miniBatchSize = 256 * numberOfWorkers;initialLearnRate = 1e-1 * miniBatchSize/256;选择= trainingOptions ('sgdm'...“ExecutionEnvironment”“平行”...%打开自动并行支持。金宝app“InitialLearnRate”initialLearnRate,...%设置初始学习率。“MiniBatchSize”,小匹马,...%设置MiniBatchSize。“详细”,错误的,...%不发送命令行输出。“阴谋”“训练进步”...打开训练进度图。“L2Regularization”1平台以及...“MaxEpochs”,50,...“洗牌”'每个时代'...'vightationdata'imdsTest,...'验证职业',地板(Numel(Imdstrain.files)/ minibatchsize),...'shownrateschedule'“分段”...“LearnRateDropFactor”, 0.1,...“LearnRateDropPeriod”, 45岁);

火车网络和用于分类

训练集群中的网络。在训练期间,情节显示了进展。

净= trainNetwork (augmentedImdsTrain、层、期权)

net = SeriesNetwork with properties: Layers: [43×1 net.cnn.layer. layer]

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

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

定义辅助功能

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

功能layers =[卷积2dlayer (3,numFilters, numConvLayers)] layer =[卷积2dlayer (3,numFilters,“填充”'相同的')BatchnormalizationLayer Ruilulayer];图层= Repmat(图层,NumConvlayers,1);结束

另请参阅

|(深度学习工具箱)|(深度学习工具箱)

相关话题