主要内容

设置参数和卷积神经网络训练

在您定义层的神经网络中描述指定的卷积神经网络层,下一步是建立网络培训选项。使用trainingOptions函数定义全局训练参数。训练一个网络,使用返回的对象trainingOptions作为输入参数trainNetwork函数。例如:

选择= trainingOptions(“亚当”);trainedNet = trainNetwork(数据、层选项);

层可学的参数还可以选择调整学习参数。有关更多信息,请参见设置参数卷积和完全连接层

指定解决者和最大数量的时代

trainNetwork可以使用不同的变异的随机梯度下降训练网络。指定使用的优化算法solverName的观点trainingOptions。把损失减小到最低限度,这些算法更新网络参数采取小步骤的损失函数的负梯度方向。

“亚当”(来自自适应估计时刻)解决优化器通常是一个很好的尝试。你也可以尝试“rmsprop”(均方根传播)“个”(随机梯度下降势头)优化器,看看这提高了培训。解决不同的工作更好的为不同的问题。解决更多信息的不同,看到的随机梯度下降法

解决更新参数每一步使用数据的一个子集。这个子集被称为mini-batch。您可以指定的大小mini-batch使用“MiniBatchSize”名称-值对的观点trainingOptions。每个参数称为一个更新迭代。一个完整的通过整个数据集被称为一个时代。您可以指定的最大数量时代训练使用“MaxEpochs”名称-值对的观点trainingOptions。默认值是30,但你可以选择一个小数量的时代为小型网络或微调和转让学习,大多数的学习已经完成。

默认情况下,软件打乱数据一次培训。您可以更改此设置使用“洗牌”名称-值对的论点。

指定和修改学习速率

您可以指定使用的全球学习速率“InitialLearnRate”名称-值对的观点trainingOptions。默认情况下,trainNetwork使用这个值在整个培训过程。你可以选择修改学习速率每一特定数量的时代的学习速率乘以一个因素。而不是使用一个小,固定学习速率在整个训练过程中,你可以选择一个更大的学习速率的开始训练,逐步减少在优化这个值。这样做可以缩短训练时间,而使小步骤的最小的损失随着培训的发展。

提示

如果mini-batch损失在训练,然后学习速率可能太高了。尝试减少学习速率,例如3倍,并重新启动网络培训。

逐步减少学习速率,使用“LearnRateSchedule”、“分段”名称-值对的论点。一旦你选择这个选项,trainNetwork增加初始学习速率每10时代的0.1倍。您可以指定的因素减少最初的学习速率和时代使用的数量“LearnRateDropFactor”“LearnRateDropPeriod”名称-值对参数,分别。

指定验证数据

在培训、执行网络验证指定验证数据使用“ValidationData”名称-值对的观点trainingOptions。默认情况下,trainNetwork验证网络每50迭代通过预测的反应验证数据和计算验证损失和准确性(根均方误差回归网络)。您可以更改验证频率使用“ValidationFrequency”名称-值对的论点。如果你的网络层预测比在训练期间的行为会有所不同(例如,辍学层),然后验证准确性可以高于训练(mini-batch)的准确性。您还可以使用验证数据时自动停止训练验证停止减少损失。打开自动验证停止使用“ValidationPatience”名称-值对的论点。

执行定期验证在训练能帮助你确定你的网络是否过度拟合训练数据。一个常见的问题是,网络训练数据简单地“记忆”,而不是学习的一般特征,使网络为新数据做出准确的预测。检查您的网络是否过度拟合,比较培训损失和相应的验证指标准确性。如果培训损失明显低于验证损失,或训练精度明显高于验证准确性,那么你的网络是过度拟合。

减少过度拟合,你可以尝试添加数据增大。使用一个augmentedImageDatastore对输入图像进行随机转换。这有助于防止网络记忆对象的确切位置和姿态。你也可以尝试增加L2正则化使用“L2Regularization”名称-值对参数,使用批处理标准化层卷积后层,添加辍学层。

选择硬件资源

如果一个GPU是可用的,那么trainNetwork默认使用它进行培训,。否则,trainNetwork使用一个CPU。此外,您可以指定您想要使用的执行环境“ExecutionEnvironment”名称-值对的论点。您可以指定一个CPU (“cpu”),一个GPU (“图形”),多个gpu (“multi-gpu”),或者当地的平行池或计算集群(“平行”)。以外的所有选项“cpu”需要并行计算工具箱™。培训在GPU需要支持GPU设备。万博1manbetx支持设备的信息,请参阅万博1manbetxGPU计算的需求(并行计算工具箱)

保存检查点网络和恢复训练

深度学习工具箱™允许您保存在训练神经网络作为.mat文件。这个周期储蓄是特别有用,当你有一个大神经网络或大数据集,和培训需要很长时间。如果训练中断由于某种原因,你可以从最近保存的检查点恢复训练神经网络。如果你想要trainNetwork拯救检查点神经网络,那么你必须指定路径的名称使用CheckpointPath选择trainingOptions。如果您所指定的路径不存在,trainingOptions返回一个错误。

trainNetwork神经网络自动分配独特的名字检查点文件。在名称的例子中,net_checkpoint__351__2018_04_12__18_09_52.mat351是迭代数,2018年_04_12是约会,18 _09_52的时间吗trainNetwork节省了神经网络。神经网络可以加载一个检查点文件通过双击它或者使用load命令在命令行。例如:

负载net_checkpoint__351__2018_04_12__18_09_52.mat
然后您可以使用层恢复训练的神经网络作为输入参数trainNetwork。例如:

trainNetwork (XTrain TTrain、net.Layers选项)
您必须手动指定培训选项和输入数据,因为检查点神经网络不包含这些信息。例如,看到的从检查点恢复训练网络

设置参数卷积和完全连接层

你可以设置学习参数与指定的全球价值观不同trainingOptions在层可学的参数,如卷积和完全连接层。例如,调整学习速率的偏见或重量,你可以指定一个值BiasLearnRateFactorWeightLearnRateFactor层的属性,分别。的trainNetwork功能使您指定使用的学习速率trainingOptions与这些因素。类似地,您还可以指定L2正则化因子权重和偏见在这些层通过指定BiasL2FactorWeightL2Factor属性,分别。trainNetwork然后增加L2您指定使用正则化因素trainingOptions与这些因素。

初始化权重在卷积和完全连接层

层权重可学的参数。您可以指定权重的初始值直接使用权重层的属性。当你训练一个网络,如果权重属性层的非空的trainNetwork使用权重属性的初始值。如果权重属性是空的,那么trainNetwork使用指定的初始化程序WeightsInitializer层的属性。

训练你的网络

在你指定的层网络和训练参数,你可以使用训练数据训练网络。数据层,和培训都是输入参数的选项trainNetwork功能,如这个例子。

层= [imageInputLayer ([28 28 1]) convolution2dLayer (5、20) reluLayer maxPooling2dLayer(2“大步”2)fullyConnectedLayer (10) softmaxLayer classificationLayer);选择= trainingOptions(“亚当”);事先= trainNetwork(数据、层选项);

训练数据可以是一个数组,一个表或一个ImageDatastore对象。有关更多信息,请参见trainNetwork函数引用页面。

另请参阅

|||

相关的话题