此示例显示如何使用Matlab自动支持训练卷积神经网络进行并行培训。金宝app深度学习培训通常需要数小时或几天。通过并行计算,您可以在本地或在云中的群集中使用多个图形处理单元(GPU)加速培训。如果您可以访问具有多个GPU的计算机,则可以在本地数据副本上完成此示例。如果您想使用更多资源,那么您可以向云扩展深度学习培训。要了解有关Parallel Training选项的更多信息,请参阅在GPU上并在GPU上并在云中扩大深度学习。此示例指导您通过使用MATLAB自动并行支持,通过步骤指导云中培训深度学习网络的步骤。金宝app
在运行该示例之前,您需要将群集配置到云端。在MATLAB中,您可以直接从MATLAB桌面创建云中的群集。在这方面家标签,在平行线菜单,选择创建和管理群集。在集群配置文件管理器中,单击创建云集群。或者,您可以使用MathWorks云中心来创建和访问计算群集。有关更多信息,请参阅云中心入门。之后,将数据上传到Amazon S3存储桶并直接从MATLAB访问它。此示例使用已存储在Amazon S3中的CIFAR-10数据集的副本。有关说明,请参阅将深度学习数据上传到云端。
在群集中启动并行池,并将工人的数量设置为群集中的GPU数。如果您指定的工人比GPU更多,那么剩余的工人是空闲的。此示例假定您使用的群集被设置为默认的群集配置文件。检查MATLAB上的默认群集配置文件家标签,在平行线>选择默认群集。
NumberofWorkers = 8;Parpool(Numberofworkers);
使用'myclusterinthecloud'配置文件启动并行池(Parpool)...连接到8名工人。
使用云使用培训和测试数据集ImageageAtastore.
。在此示例中,使用存储在Amazon S3中的CIFAR-10数据集的副本。为确保工人可以访问云中的数据存储,请确保正确设置AWS凭据的环境变量。看将深度学习数据上传到云端。
imdstrain = imageageataStore('s3:// cifar10cloud / cifar10 /火车'那......'upplyubfolders',真的,......'labelsource'那'foldernames');imdstest = imageageatastore('s3:// cifar10cloud / cifar10 / test'那......'upplyubfolders',真的,......'labelsource'那'foldernames');
通过创建一个增强图像数据训练网络AugmentedimageGedataStore
目的。使用随机翻译和水平反射。数据增强有助于防止网络过度接收和记忆培训图像的确切细节。
图像_ [32 32 3];PIXELRANGE = [-4 4];imageaugmenter = imagedataAugmenter(......'randxreflection',真的,......'randxtranslation',pixelrange,......'randytranslation',pixelrange);egmentedimdstrain = upmentedimageageataStore(图像化,Imdstrain,......'dataaugmentation',imageaugmender,......'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;选项=培训选项('sgdm'那......'executionenvironment'那'平行线'那......%打开自动并行支持。金宝app'italllearnrate',initiallearnrate,......%设置初始学习率。'迷你atchsize',小匹马,......%设置小匹匹匹匹配。'verbose',错误的,......%不发送命令行输出。'plots'那'培训 - 进展'那......%打开训练进度情节。'L2Regularization',1e-10,......'maxepochs',50,......'洗牌'那'每个时代'那......'vightationdata',Indstest,......'验证职业',地板(numel(imdstrain.files)/ minibatchsize),......'学习chedule'那'分段'那......'学习ropfactor',0.1,......'学习ropperiod',45);
在群集中培训网络。在培训期间,绘图显示进度。
net = trainnetwork(augmentedimdstrain,图层,选项)
net = seriesnetwork with属性:图层:[43×1 nnet.cnn.layer.layer]
通过使用培训的网络对网络的准确性进行分类到本地计算机上的测试图像。然后将预测的标签与实际标签进行比较。
YPREDITED =分类(网络,IMDSTEST);精度= sum(ypredicted == imdstest.labels)/ numel(imdstest.labels)
定义在网络架构中创建卷积块的函数。
功能图层=卷积块(NumFilters,NumConvlayers)层= [卷积2dlayer(3,numfilters,'填充'那'相同的')BatchnormalizationLayer Ruilulayer];图层= Repmat(图层,Numconvlayers,1);结尾
Trainnetwork.
|培训选项
|ImageageAtastore.