主要内容

设置参数和火车卷积神经网络

定义神经网络的层后,请参见指定卷积神经网络的层数,下一步是设置网络的培训选项。使用培训选项函数来定义全局训练参数。要训练一个网络,使用返回的对象培训选项的输入参数Trainnetwork.函数。例如:

选择= trainingOptions(“亚当”);TrousaInnet = Trainnetwork(数据,图层,选项);

具有可学习参数的层也有调整学习参数的选项。有关更多信息,请参见在卷积和完全连接的图层中设置参数

指定求解器和最大epoch数

Trainnetwork.可以使用不同的随机梯度下降变体来训练网络。使用使用指定优化算法solvername.争论培训选项.为了最小化损耗,这些算法通过在损耗函数的负梯度方向上采取小步骤来更新网络参数。

“亚当”(衍生自自适应估计时刻)求解器通常是良好的优化器,首先尝试。你也可以尝试'rmsprop'(均方根传播)和'sgdm'(随机梯度下降动量)优化器,看看这是否改善了训练。不同的求解器对不同的问题更好地工作。有关不同求解器的更多信息,请参阅随机梯度下降

求解器在每一步使用数据子集更新参数。这个子集叫做amini-batch.属性指定小批处理的大小“MiniBatchSize”名称 - 值对参数培训选项.每个参数更新都称为迭代.对整个数据集的完整传递称为时代.您可以使用使用的培训最大单位数“MaxEpochs”名称 - 值对参数培训选项.默认值是30,但是您可以为小型网络或微调和迁移学习选择较少数量的epoch,其中大部分学习已经完成。

默认情况下,软件在培训前将数据洗牌一次。您可以使用使用方法更改此设置'洗牌'名称-值对的论点。

指定和修改学习率

您可以通过使用来指定全局学习率'italllearnrate'名称 - 值对参数培训选项.默认情况下,Trainnetwork.在整个培训过程中使用此值。您可以通过将学习率乘以一个因数来选择每一特定纪元数修改学习率。与其在整个训练过程中使用一个小的、固定的学习率,不如在训练开始时选择一个较大的学习率,并在优化过程中逐渐减少这个值。这样做可以缩短训练时间,同时使训练过程中的损失最小化。

提示

如果培训期间的迷你批量损失变为,然后学习率可能太高。尝试降低学习率,例如3倍,并重新启动网络培训。

逐步降低学习率,使用'“学习”,'分段'名称-值对的论点。一旦你选择了这个选项,Trainnetwork.将初始学习率乘以每10个时期0.1倍。您可以通过使用该因素来降低初始学习率和时代数量的因素'学习ropfactor'“LearnRateDropPeriod”名称值对参数分别。

指定验证数据

若要在培训期间执行网络验证,请使用'vightationdata'名称 - 值对参数培训选项.默认情况下,Trainnetwork.通过预测验证数据的响应和计算验证损失和准确性(回归网络的均方根误差),每50次对网络进行验证。属性可以更改验证频率'验证职业'名称-值对的论点。如果您的网络在预测期间具有不同于训练期间的层(例如,丢弃层),则验证精度可以高于训练(迷你批量)精度。您还可以使用验证数据在验证丢失停止减少时自动停止培训。要打开自动验证停止,请使用“ValidationPatience”名称-值对的论点。

在培训期间定期执行验证有助于您确定您的网络是否已过度接收到培训数据。常见问题是网络简单地“记住”训练数据,而不是学习使得网络能够对新数据进行准确预测的一般特征。要检查您的网络是否过度装备,请将培训丢失和准确性与相应的验证度量进行比较。如果培训损失明显低于验证损失,或​​者训练准确性明显高于验证准确性,那么您的网络就会过度装备。

为了减少过拟合,可以尝试添加数据扩充。使用一个AugmentedimageGedataStore.在输入图像上执行随机转换。这有助于防止网络存储对象的确切位置和方向。你也可以尝试增加l2正规化使用“L2Regularization”名称值对参数,使用批量阵列层后卷积层,并添加丢弃层。

选择硬件资源

如果GPU可用,那么Trainnetwork.默认情况下,将其用于培训。除此以外,Trainnetwork.使用一个CPU。属性指定所需的执行环境“ExecutionEnvironment”名称-值对的论点。您可以指定单个CPU(“cpu”),单个GPU('GPU')、多个图形处理器('多gpu'),或本地并行池或计算集群('平行').所有选项,除了“cpu”需要并行计算工具箱™。GPU培训需要支持的GPU设备。万博1manbetx有关支持的设备的信息,请参见万博1manbetxGPU通万博1manbetx过发布支持(并行计算工具箱)

保存检查点网络并恢复培训

深度学习工具箱™使您可以在训练期间的每个纪元后将网络保存为.mat文件。当您有一个大的网络或一个大的数据集,并且训练需要很长时间时,这种定期保存特别有用。如果培训由于某种原因中断,您可以从上次保存的检查点网络恢复培训。如果你想要Trainnetwork.要保存检查点网络,那么您必须使用使用方法指定路径的名称'checkpoinspath'名称 - 值对参数培训选项.如果您指定的路径不存在,则培训选项返回错误。

Trainnetwork.自动为检查点网络文件分配唯一的名称。在示例名称中,net_checkpoint__351__2018_04_12__18_09_52.Mat,351是迭代号码,2018年_04_12是日期,和18_09_52时间是什么时候Trainnetwork.保存网络。您可以通过双击它或使用命令行中的Load命令加载检查点网络文件。例如:

load net_checkpoint__351__2018_04_12__18_09_52.mat
然后,您可以通过使用网络层作为输入参数来恢复培训Trainnetwork..例如:

trainNetwork (XTrain YTrain、net.Layers选项)
您必须手动指定培训选项和输入数据,因为检查点网络不包含此信息。例如,请参见从检查点网络恢复培训

在卷积和完全连接的图层中设置参数

您可以将学习参数设置为与指定的全局值不同培训选项在具有学习参数的层中,例如卷积和完全连接的层。例如,要调整偏差或权重的学习率,您可以指定值的值Biaslearnratefactor.或者WeightLearnRateFactor分别层的性质。的Trainnetwork.函数乘以您指定使用的学习速率培训选项与这些因素。同样,您还可以指定L2通过指定,这些层中重量和偏差的正则化因子biasl2factor.掌权2factor.属性分别。Trainnetwork.然后乘以l2正则化因子,你指定使用培训选项与这些因素。

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

层权值是可学习的参数。属性可以直接指定权重的初始值权重层的财产。培训网络时,如果权重属性是非空的Trainnetwork.使用权重属性作为初始值。如果权重属性为空Trainnetwork.使用指定的初始化程序掌控度层的财产。

训练你的网络

指定网络的图层和培训参数后,您可以使用培训数据训练网络。数据,图层和培训选项都是所有输入参数Trainnetwork.函数,如本例所示。

layers = [imageInputLayer([28 28 1])卷积2dlayer (5,20) reluLayer maxPooling2dLayer(2,'Stride',2) full connectedlayer (10) softmaxLayer classiationlayer];选择= trainingOptions(“亚当”);事先= trainNetwork(数据、层选项);

培训数据可以是数组,表格或者ImageDatastore目的。有关更多信息,请参阅Trainnetwork.函数引用页面。

另请参阅

|||

相关话题