定义神经网络的图层如下所述指定卷积神经网络的图层,下一步是为该网络设置培训选项。使用trainingOptions
函数来定义全局培训参数。要培训网络,请使用返回的对象trainingOptions
作为一个输入论点trainNetwork
功能。例如:
选择= trainingOptions(“亚当”);trainedNet = trainNetwork(数据、层选项);
具有可读参数的图层也具有调整学习参数的选项。有关更多信息,请参阅设置参数在卷积和完全连接层.
trainNetwork
可以使用不同变体的随机梯度下降来训练网络。属性指定优化算法solverName
的观点trainingOptions
.为了使损失最小化,这些算法通过在损失函数的负梯度方向上采取小步骤来更新网络参数。
这'亚当'
(来自自适应时刻估计) solver通常是一个很好的优化器,首先尝试。你也可以试试“rmsprop”
(均方根广场传播)和“个”
(随机梯度下降与动量)优化器,看看这是否改善训练。不同的解决者能更好地解决不同的问题。有关不同解算器的更多信息,请参见随机梯度下降法.
索盘使用每个步骤的子集更新参数。这个子集被称为a迷你批次.您可以使用inifi-batch的大小指定'minibatchsize'
的名称-值对参数trainingOptions
.每次参数更新都称为迭代.全通过整个数据集被称为时代.方法指定要训练的最大时点数'maxepochs'
的名称-值对参数trainingOptions
.默认值为30,但您可以为小型网络选择较少数量的时期或用于微调和转移学习,其中大部分学习已经完成。
默认情况下,该软件在训练前会对数据进行一次洗漱。属性可以更改此设置“洗牌”
名称-值对的论点。
参数可以指定全局学习速率“InitialLearnRate”
的名称-值对参数trainingOptions
.默认,trainNetwork
在整个培训过程中使用此值。您可以选择通过将学习率与一个因素乘以学习率来选择修改学习率的每一定数量的时期。在整个培训过程中,您可以在培训开始时选择更大的学习率,而不是在培训过程中选择更大的学习率,并在优化期间逐步降低此值。这样做可以缩短培训时间,同时能够迈出训练进展的最小损失的较小步骤。
小费
如果在训练过程中出现小批量丢失南
,则学习率可能过高。尝试降低学习速率,例如将学习速率降低到原来的3倍,并重新开始网络训练。
要逐渐降低学习速度,使用“LearnRateSchedule”、“分段”
名称-值对的论点。选择此选项后,trainNetwork
每10个epoch乘以0.1倍的初始学习速率。属性指定减少初始学习速率的因素和epoch的数量“LearnRateDropFactor”
和'学习ropperiod'
分别为名称-值对参数。
要在培训期间执行网络验证,请使用使用的验证数据“ValidationData”
的名称-值对参数trainingOptions
.默认,trainNetwork
每50个迭代通过预测验证数据的响应并计算验证丢失和准确性(回归网络的根均方错误)来验证每50次迭代。您可以使用该验证频率更改验证频率“ValidationFrequency”
名称-值对的论点。如果网络的层在预测过程中与训练过程中表现不同(例如,dropout层),那么验证的准确性可能高于训练(小批量)的准确性。当验证丢失停止减少时,您还可以使用验证数据自动停止培训。若要打开自动验证停止,请使用'验证景点'
名称-值对的论点。
在训练期间定期进行验证可以帮助您确定您的网络是否与训练数据过度拟合。一个常见的问题是,网络只是简单地“记忆”训练数据,而不是学习使网络能够对新数据做出准确预测的一般特征。要检查网络是否过拟合,请将训练损失和准确性与相应的验证指标进行比较。如果训练损失显著低于验证损失,或者训练精度显著高于验证精度,则说明网络过拟合。
要减少过度装备,可以尝试添加数据增强。用A.augmentedImageDatastore
对输入图像执行随机变换。这有助于防止网络记忆对象的确切位置和方向。你也可以试着增加L2正则化使用'L2Regularization'
名称-值对参数,在卷积层之后使用批处理归一化层,并添加退出层。
如果GPU可用,那么trainNetwork
默认情况下,用于培训。否则,trainNetwork
使用CPU。或者,您可以使用所需的执行环境指定使用'executionenvironment'
名称-值对的论点。您可以指定单个CPU ('中央处理器'
),一个单独的GPU (“图形”
),多个GPU(“multi-gpu”
)或本地并行池或计算群集(“平行”
)。除此之外的所有选项'中央处理器'
需要并行计算工具箱™。GPU训练需要CUDA®启用GPU,具有计算能力3.0或更高。
深度学习工具箱™使您可以将网络保存为培训期间每个时期后的网络。当您拥有大型网络或大数据集时,这种定期保存尤其有用,并且培训需要很长时间。如果由于某种原因培训被中断,您可以从上次保存的检查点网络恢复培训。如果你想trainNetwork
若要保存检查点网络,则必须使用“CheckpointPath”
的名称-值对参数trainingOptions
.如果指定的路径不存在,则trainingOptions
返回一个错误。
trainNetwork
自动为检查点网络文件分配唯一名称。在示例名称中,net_checkpoint__351__2018_04_12__18_09_52.mat
, 351是迭代数,2018_04_12.
是日期,还有18 _09_52
是时候了trainNetwork
保存网络。可以通过双击检查点网络文件或在命令行上使用load命令来加载检查点网络文件。例如:
负载net_checkpoint__351__2018_04_12__18_09_52.mat
trainNetwork
.例如:
Trainnetwork(XTrain,Ytrain,Net.Layers,选项)
可以设置学习参数与指定的全局值不同trainingOptions
在具有可学习参数的层中,如卷积层和完全连接层。例如,要调整偏差或权重的学习速率,可以为BiasLearnRateFactor
或举重
各层的性质。这trainNetwork
功能乘以使用的学习率trainingOptions
与这些因素。类似地,您也可以指定L2这些层的权重和偏差的正则化因子通过指定BiasL2Factor
和WeightL2Factor
属性,分别。trainNetwork
然后乘以L2使用使用的正则化因子trainingOptions
与这些因素。
层权重是可学习参数。您可以直接指定权重的初始值重量
属性。当培训网络时,如果重量
那个层的财产是非空的,然后trainNetwork
用来重量
属性作为初始值。如果是重量
财产是空的,然后trainNetwork
控件指定的初始化器WeightsInitializer
属性。
指定网络的层和训练参数后,可以使用训练数据训练网络。类的输入参数包括数据、层和培训选项trainNetwork
功能,如在此示例中。
图层= [ImageInputLayer([28 28 1])卷积2dlayer(5,20)ultulayer maxpooling2dlayer(2,'stride',2)全连接层(10)softmaxlayer分类层];选择= trainingOptions(“亚当”);Convnet = Trainnetwork(数据,图层,选项);
培训数据可以是数组、表或imageageAtastore.
对象。有关更多信息,请参见trainNetwork
功能参考页面。
Convolution2dLayer
|FullyConnectedLayer
|trainingOptions
|trainNetwork