深度学习神经网络培训选项
返回由指定的优化器的培训选项选项
= TrainingOptions(solvername.
)solvername.
.要培训网络,请使用培训选项作为输入参数Trainnetwork.
功能。
返回训练选项和由一个或多个名称-值对参数指定的附加选项。选项
= TrainingOptions(solvername.
那名称,价值
)
创建一组选项来训练网络使用随机梯度下降与动量。每5个周期将学习率降低0.2倍。将训练的最大纪元数设置为20,并在每次迭代中使用包含64个观察值的小批处理。打开训练进度图。
选项=培训选项('sgdm'那...“LearnRateSchedule”那“分段”那...'学习ropfactor',0.2,...'学习ropperiod',5,...“MaxEpochs”, 20岁,...“MiniBatchSize”,64,...'plots'那'培训 - 进步')
选项= TransionOptionsSGDM具有属性:动量:0.9000 InitialLearnrate:0.0100学习roprateRopfactor:0.2000 Rearnchratedropperop:[]验证频繁:50 validationpatience:inf shuffle:'一次'checkpoint pather:'''executionEnvironment:'auto'工作者:[] outputfcn:[]绘图:'培训 - 进度'序列灵长:'longest'senderpaddingvalue:0 senderpaddingdirection:'右'Dispatchinbackground:0 resetInputnormalization:1 BatchnormalizationStatistics:'人口'
当您培训深度学习网络时,监控培训进度通常有用。通过在培训期间绘制各种指标,您可以了解培训是如何进展的。例如,您可以确定网络精度是否改进的速度,以及网络是否开始过度使用培训数据。
当你指定'培训 - 进步'
作为'plots'
价值培训选项
并开始网络培训,Trainnetwork.
创建一个数字并在每次迭代时显示培训指标。每次迭代都是对梯度的估计和网络参数的更新。中指定验证数据培训选项
,然后该图显示每次的验证度量Trainnetwork.
验证网络。图绘制以下内容:
训练准确性-每个小批量的分类精度。
平滑训练准确性- 平滑训练精度,通过将平滑算法应用于训练准确性而获得。它比不平衡的准确性少噪声,使得现货趋势更容易。
验证准确性- 整个验证集的分类准确性(指定使用培训选项
)。
训练损失那平滑训练损失, 和确认损失-每个迷你批处理,其平滑版本和验证集的损失分别丢失。如果您的网络的最终层是一个classificationLayer
,然后损失函数是交叉熵损失。有关分类和回归问题的丢失函数的更多信息,请参阅输出层.
对于回归网络,图形绘制了根均方误差(RMSE)而不是精度。
图标记了每次培训时代使用阴影背景。epoch是完整的通过整个数据集。
在培训期间,您可以通过单击右上角的停止按钮来停止培训并返回网络的当前状态。例如,当网络的准确性到达高原时,您可能希望停止培训,并且很明显,准确性不再改善。单击“停止”按钮后,可能需要一段时间才能完成培训。一旦培训完成,Trainnetwork.
返回培训的网络。
培训结束时,查看结果显示最终的验证准确性以及培训完成的原因。最终的验证度量标准标记为最终的在地块中。如果您的网络包含批量归一化层,则最终验证度量可以与培训期间评估的验证度量不同。这是因为在训练完成后,用于批量标准化的平均值和方差统计数据可以不同。例如,如果“BatchNormalizationStatisics”
训练方法是'人口'
然后,在训练之后,软件通过再次通过训练数据来完成批量归一化统计信息,并使用产生的均值和方差。如果是“BatchNormalizationStatisics”
训练方法是“移动”
,然后软件使用运行估计值来近似训练期间的统计数据,并使用统计数据的最新值。
在右侧,查看有关培训时间和设置的信息。要了解有关培训选项的更多信息,请参阅设置参数和火车卷积神经网络.
训练期间的训练进展
训练网络,并在训练过程中绘制训练进度图。
加载培训数据,其中包含5000个数字图像。留出1000个图像以进行网络验证。
[xtrain,ytrain] = DigitTrain4darraydata;idx = randperm(大小(xtrain,4),1000);xvalidation = XTrain(::::,IDX);XTrain(::::,idx)= [];YValidation = Ytrain(IDX);Ytrain(IDX)= [];
构建网络以对数字图像数据进行分类。
layers = [imageInputLayer([28 28 1])]“填充”那'相同的')BatchnormalizationLayer Ruilulayer MaxPooling2dlayer(2,'走吧',2)卷积2dlayer(3,16,“填充”那'相同的')BatchnormalizationLayer Ruilulayer MaxPooling2dlayer(2,'走吧',2)卷积2dlayer(3,32,“填充”那'相同的')BatchnormalizationLayer Rublayer全连接列(10)SoftMaxLayer分类层];
指定网络训练选项。要在训练期间定期验证网络,请指定验证数据。选择'验证职业'
值,以便每个epoch大约验证一次网络。在培训过程中规划培训进度,指定'培训 - 进步'
作为'plots'
价值。
选项=培训选项('sgdm'那...“MaxEpochs”,8,...'vightationdata',{xvalidation,yvalidation},...'验证职业',30,...'verbose'假的,...'plots'那'培训 - 进步');
训练网络。
net = trainnetwork(xtrain,ytrain,图层,选项);
solvername.
-用于培训网络的求解器'sgdm'
|'rmsprop'
|'亚当'
训练网络的求解器,指定为以下之一:
'sgdm'
-使用随机梯度下降与动量(SGDM)优化器。可以使用。指定动量值'势头'
名称-值对的论点。
'rmsprop'
- 使用RMSProp优化器。您可以使用该方法指定平方梯度移动平均值的衰减率'squaredgradientdecayfactor'
名称-值对的论点。
'亚当'
- 使用adam优化器。您可以使用该方法指定渐变和平方渐变移动平均值的衰减率'gradientdecayfactor'
和'squaredgradientdecayfactor'
名称值对参数分别。
有关不同求解器的更多信息,请参阅随机梯度下降.
指定可选的逗号分离对名称,价值
论点。姓名
是参数名称和价值
是相应的价值。姓名
必须出现在引号内。您可以以任何顺序指定多个名称和值对参数Name1, Value1,…,的家
.
'InitialLearnrate',0.03,'L2Regularization',0.0005,“学习”,'分段'
将初始学习率指定为0.03和L.2
正则化因子为0.0005,并指示软件通过乘以一定因素来指示每种给定数量的时期的学习率。
'plots'
-在网络培训期间显示绘图'没有任何'
(默认)|'培训 - 进步'
在网络训练期间要显示的图,指定为逗号分隔对,由'plots'
和以下之一:
'没有任何'
-在训练期间不要显示情节。
'培训 - 进步'
- 情节培训进度。该地块显示了迷你批量损失和准确性,验证损失和准确性以及有关培训进展的其他信息。绘图有一个停止按钮在右上角。点击按钮停止训练,返回网络当前状态。有关培训进度图的更多信息,请参见监测深度学习培训进度.
例子:“阴谋”,“训练进步”
'verbose'
-显示培训进度信息的指标1
(真的
)(默认)|0.
(错误的
)指示指示在命令窗口中显示培训进度信息,指定为逗号分隔的对'verbose'
和任何一种1
(真的
) 或者0.
(错误的
)。
冗长输出显示以下信息:
网络的分类
场地 | 描述 |
---|---|
时代 |
纪念碑。epoch对应于数据的完整通行证。 |
迭代 |
迭代号码。迭代对应于迷你批次。 |
时间流逝 |
时间,分钟和秒数经过时间。 |
迷你批量精度 |
在小批量上的分类精度。 |
验证准确性 |
验证数据的分类准确性。如果未指定验证数据,则该函数不会显示此字段。 |
迷你批量损失 |
迷你批处理上的损失。如果输出层是ClassificationOutputLayer 对象,然后损失是互斥类多级分类问题的跨熵损失。 |
确认损失 |
验证数据的丢失。如果输出层是ClassificationOutputLayer 对象,然后损失是互斥类多级分类问题的跨熵损失。如果未指定验证数据,则该函数不会显示此字段。 |
基础学习速率 |
基础学习率。该软件将该值乘以图层的学习速率因子。 |
回归网络
场地 | 描述 |
---|---|
时代 |
纪念碑。epoch对应于数据的完整通行证。 |
迭代 |
迭代号码。迭代对应于迷你批次。 |
时间流逝 |
时间,分钟和秒数经过时间。 |
迷你批量RMSE |
迷你批处理上的根均匀误差(RMSE)。 |
验证RMSE. |
RMSE在验证数据上。如果未指定验证数据,则软件不会显示此字段。 |
迷你批量损失 |
迷你批处理上的损失。如果输出层是回归outputLayer. 对象,那么损失是半平均平方误差。 |
确认损失 |
验证数据的丢失。如果输出层是回归outputLayer. 对象,那么损失是半平均平方误差。如果未指定验证数据,则软件不会显示此字段。 |
基础学习速率 |
基础学习率。该软件将该值乘以图层的学习速率因子。 |
要指定验证数据,请使用'vightationdata'
名称-值对。
例子:'verbose',false
'verbosefrequency'
-冗长打印的频率详细打印的频率,它是打印到命令窗口之间的迭代次数,指定为包括的逗号分隔对'verbosefrequency'
和一个正整数。此选项只有效果'verbose'
价值等于真的
.
如果您在培训期间验证网络,那么Trainnetwork.
每次发生验证时也会打印到命令窗口。
例子:“VerboseFrequency”,100年
“MaxEpochs”
-最大数量的时期用于培训的最大纪元数量,指定为逗号分隔的对组成“MaxEpochs”
和一个正整数。
迭代是在梯度下降算法中采取的一个步骤,朝向使用迷你批次最小化损耗函数。纪元是培训算法在整个训练集中的完整通行证。
例子:'maxepochs',20
“MiniBatchSize”
-迷你批量大小用于每个训练迭代的小批处理的大小,指定为逗号分隔的对“MiniBatchSize”
和一个正整数。迷你批处理是训练集的子集,用于评估损耗功能的梯度并更新权重。看随机梯度下降.
例子:“MiniBatchSize”,256年
“洗牌”
-数据洗牌选项'一次'
(默认)|'绝不'
|'每个时代'
用于数据变换的选项,指定为组成的逗号分隔对“洗牌”
和以下之一:
'一次'
- 在培训之前洗一次培训和验证数据一次。
'绝不'
- 请勿将数据换乘。
'每个时代'
- 在每次训练中进行培训数据,并在每个网络验证之前随机播放验证数据。如果迷你批次尺寸均匀地除以培训样本的数量,那么Trainnetwork.
丢弃不适合每个纪元的最终完整小批的训练数据。为避免每个epoch都丢弃相同的数据,请设置“洗牌”
价值'每个时代'
.
例子:“洗牌”,“every-epoch”
'vightationdata'
-用于培训期间验证的数据在培训期间用于验证的数据,指定为数据存储,表或包含验证预测器和响应的单元格数组。
控件支持的相同格式可以指定验证预测器和响应万博1manbetxTrainnetwork.
功能。您可以将验证数据指定为数据存储,表或单元格数组{预测器,答复}
,在那里预测
包含验证预测器和回应
包含验证响应。
有关更多信息,请参阅图片
那序列
, 和特性
输入论点Trainnetwork.
功能。
在训练中,Trainnetwork.
计算验证数据的验证精度和验证丢失。要指定验证频率,请使用'验证职业'
名称-值对的论点。您还可以使用验证数据在验证损失停止减少时自动停止训练。要启用自动验证停止,请使用'验证景点'
名称-值对的论点。
如果网络的层在预测期间的行为与训练期间的行为不同(例如,退出层),那么验证的准确性可以高于训练(小批量)的准确性。
将验证数据按照“洗牌”
价值。如果是“洗牌”
价值等于'每个时代'
,然后在每个网络验证之前播放验证数据。
'验证职业'
-网络验证频率迭代数量的网络验证频率,指定为逗号分隔对组成'验证职业'
和一个正整数。
这'验证职业'
值是验证度量评估之间的迭代次数。要指定验证数据,请使用'vightationdata'
名称-值对的论点。
例子:'验证职业',20
'验证景点'
-停止验证的耐心正
(默认)|正整数验证停止网络培训的耐心,指定为逗号分隔对'验证景点'
一个正整数或正
.
这'验证景点'
值是在网络训练停止前,验证集上的损失可能大于或等于先前最小损失的次数。要启用自动验证停止,请指定一个正整数作为'验证景点'
价值。如果使用默认值正
,然后训练在最大数量的时期之后停止。要指定验证数据,请使用'vightationdata'
名称-值对的论点。
例子:'vighationpatience',5
'italllearnrate'
-初始学习率用于培训的初始学习率,指定为逗号分隔对组成'italllearnrate'
和正标量。默认值为0.01'sgdm'
求解器和0.001'rmsprop'
和'亚当'
求解器。如果学习率太低,则培训需要很长时间。如果学习率太高,则培训可能达到次优效果或分歧。
例子:'italllearnrate',0.03
数据类型:单身的
|双
“LearnRateSchedule”
-培训期间放弃学习率的选择'没有任何'
(默认)|“分段”
选项,用于在训练期间放弃学习率,指定为逗号分隔对组成“LearnRateSchedule”
和以下之一:
'没有任何'
- 在整个训练中,学习率仍然不变。
“分段”
- 软件通过乘以某个因素来更新学习率每一定数量的时期。使用学习ropfactor.
名称 - 值对参数指定此因素的值。使用LearnRateDropPeriod
名称值对参数指定乘法之间的时期数。
例子:“LearnRateSchedule”、“分段”
'学习ropperiod'
-放弃学习率的时期数量下降学习率的时期数量,指定为逗号分隔对组成'学习ropperiod'
和一个正整数。此选项仅在值的值时有效学习宿舍
是“分段”
.
每次指定数量的时期通过时,软件将全局学习率乘以下降因子。使用滴定因子使用学习ropfactor.
名称-值对的论点。
例子:“LearnRateDropPeriod”,3
'学习ropfactor'
-放弃学习率的因素丢弃学习率的因素,指定为逗号分隔对组成'学习ropfactor'
和0到1的标量才有有效的值学习宿舍
是“分段”
.
学习ropfactor.
每当一定数量的时期通过时,是一个乘法因素适用于学习率。使用该时指定时期的数量LearnRateDropPeriod
名称-值对的论点。
例子:“LearnRateDropFactor”,0.1
数据类型:单身的
|双
“L2Regularization”
-适应L.2正则化适应L.2正则化(权重衰减),指定为逗号分隔对,由“L2Regularization”
和一个非负标量。有关更多信息,请参阅L2正则化.
您可以为L指定乘数2具有学习参数的网络层的正常化。有关更多信息,请参阅在卷积和全连接层中设置参数.
例子:“L2Regularization”,0.0005
数据类型:单身的
|双
'势头'
-前一步的贡献前一次迭代的参数更新步骤对当前带动量随机梯度下降迭代的贡献,指定为逗号分离对,由'势头'
并且标量为0到1.值0表示从前一步没有贡献,而1的值为1表示从上一步的最大贡献。
指定'势头'
值,您必须设置solvername.
成为'sgdm'
.默认值适用于大多数问题。有关不同求解器的更多信息,请参阅随机梯度下降.
例子:“动量”,0.95
数据类型:单身的
|双
'gradientdecayfactor'
-梯度移动平均衰减率亚当求解器的梯度移动平均衰减率,指定为逗号分隔对组成'gradientdecayfactor'
并且非负标量小于1.梯度衰减率表示β1
在[4].
指定'gradientdecayfactor'
值,您必须设置solvername.
成为'亚当'
.默认值适用于大多数问题。有关不同求解器的更多信息,请参阅随机梯度下降.
例子:'GradientDecayfactor',0.95
数据类型:单身的
|双
'squaredgradientdecayfactor'
-平方梯度移动平均的衰减率ADAM和RMSPROP求解器的平方梯度平均平均衰变率,指定为逗号分隔对'squaredgradientdecayfactor'
并且非负标量小于1.平方梯度衰减速率表示β2
在[4].
指定'squaredgradientdecayfactor'
值,您必须设置solvername.
成为'亚当'
或者'rmsprop'
.衰减速率的典型值分别为0.9,0.99和0.999,对应于分别为10,100和1000个参数更新的平均长度。亚当求解器的默认值为0.999。RMSPROP解算器的默认值为0.9。
有关不同求解器的更多信息,请参阅随机梯度下降.
例子:'squaredgradientdecayfactor',0.99
数据类型:单身的
|双
‘ε’
-分母偏移用于亚当和RMSPROP求解器的分母偏移,指定为逗号分隔对‘ε’
和正标量。求解器在网络参数更新中添加到分母的偏移量,以避免分割零。
指定‘ε’
值,您必须设置solvername.
成为'亚当'
或者'rmsprop'
.默认值适用于大多数问题。有关不同求解器的更多信息,请参阅随机梯度下降.
例子:'epsilon',1e-6
数据类型:单身的
|双
'resetInputnormalization'
-重置输入层归一化的选项真的
(默认)|错误的
重置输入层归一化的选项,指定为以下之一:
真的
-重置输入层归一化统计并在训练时重新计算。
错误的
- 计算空中培训时间的归一化统计信息。
'BatchnormalizationStatistics'
-在批量归一化层中评估统计数据的模式'人口'
(默认)|“移动”
批处理归一化层统计的评估方式,指定为:
'人口'
—使用人口统计。在训练结束后,软件将训练数据再次遍历,并使用得到的平均值和方差来完成统计。
“移动”
- 使用更新步骤给出的运行估计,近似统计数据
在哪里 和 分别表示更新后的平均值和方差, 和 分别表示均值衰减值和方差衰减值, 和 表示层输入的平均值和方差,以及 和 表示运动均值和方差值的最新值。培训后,软件使用移动均值和方差统计的最新值。此选项仅支持CPU和单个万博1manbetxGPU培训。
'gradientthreshold'
-梯度阈值正
(默认)|正标量梯度阈值,指定为逗号分隔对组成'gradientthreshold'
和正
或者一个正标量。如果梯度值超过毕业生察列人
,然后根据渐变进行裁剪GradientThresholdMethod.
.
例子:'GradientThreshold',6
'GradientThresholdMethod'
-梯度阈值方法'l2norm'
(默认)|'global-l2norm'
|'绝对值'
梯度阈值方法用于剪辑超过梯度阈值的梯度值,指定为逗号分隔对组成'GradientThresholdMethod'
和以下之一:
'l2norm'
-如果L2可学习参数的梯度范数大于毕业生察列人
,然后缩放梯度,使L2规范等于毕业生察列人
.
'global-l2norm'
- 如果是全球l2规范,L.,大于毕业生察列人
,然后将所有梯度缩放到一个因素毕业分子/
L..全球L2规范考虑所有可学习的参数。
'绝对值'
- 如果在学习参数的梯度中的单个部分导数的绝对值大于毕业生察列人
,然后缩放部分导数以具有等于的幅度毕业生察列人
保留偏导数的符号。
有关更多信息,请参阅渐变剪裁.
例子:'GradientThresholdmethod','Global-L2norm'
'sequencelength'
-填充,截断或分割输入序列选项'最长'
(默认)|“最短”
|正整数填充、截断或拆分输入序列的选项,指定为以下之一:
'最长'
—在每个小批量中填充序列,使其与最长序列具有相同的长度。这个选项不会丢弃任何数据,尽管填充会给网络带来噪声。
“最短”
- 截断每个小批处理中的序列与最短序列具有相同的长度。此选项可确保在丢弃数据的成本下添加填充。
正整数 - 对于每个小批次,填充序列到最接近的指定长度的倍数大于小批次中最长的序列长度,然后将序列分成规定长度的较小序列。如果发生拆分,则软件会创建额外的百分之批处理。如果完整序列不适合内存,请使用此选项。或者,尝试通过设置序列减少每百分之批次的序列数“MiniBatchSize”
值较低的值。
要了解有关填充,截断和拆分输入序列的影响,请参阅序列填充、截断和分割.
例子:“SequenceLength”、“最短的
“SequencePaddingDirection”
-填充或截断的方向“对”
(默认)|'剩下'
填充或截断的方向,指定为以下之一:
“对”
- 右侧的垫或截断序列。该序列在同一时间步骤开始,软件截断或将填充添加到序列的末尾。
'剩下'
- 左侧或截断序列。该软件截断或将填充添加到序列的开始,使序列同时结束。
因为LSTM层处理序列数据的时间一步一次,当层OutputMode.
属性是'最后的'
,最终时间步骤中的任何填充都可以对图层输出产生负面影响。键入或截断左侧的序列数据,设置“SequencePaddingDirection”
选择'剩下'
.
用于序列到序列网络(当OutputMode.
属性是'序列'
对于每个LSTM层),在第一次步骤中的任何填充都可以对较早时间步长的预测产生负面影响。键入或截断右侧序列数据,请设置“SequencePaddingDirection”
选择“对”
.
要了解有关填充,截断和拆分输入序列的影响,请参阅序列填充、截断和分割.
“SequencePaddingValue”
-填充输入序列的值填充输入序列的值,指定为标量。该选项仅在何时有效Sequencelength.
是'最长'
或正整数。不要用垫缝南
,因为这样做可以在整个网络中传播错误。
例子:'sequencdpaddingsvalue', - 1
'executionenvironment'
-培训网络硬件资源'汽车'
(默认)|“cpu”
|'GPU'
|'多gpu'
|'平行线'
培训网络硬件资源,指定为以下之一:
'汽车'
- 如果可用,请使用GPU。否则,使用CPU。
“cpu”
—使用CPU。
'GPU'
- 使用GPU。
'多gpu'
- 在一台计算机上使用多个GPU,使用本地并行池基于默认群集配置文件。如果没有当前并行池,则该软件将启动具有等于可用GPU的数量的池大小的并行池。
'平行线'
- 根据您的默认集群配置文件使用本地或远程并行池。如果没有当前并行池,则软件将使用默认群集配置文件启动一个。如果池可以访问GPU,那么只有具有唯一GPU的工人执行培训计算。如果游泳池没有GPU,则培训在所有可用的CPU工作者上进行。
有关何时使用不同的执行环境的更多信息,请参阅平行和云中的深度学习.
'GPU'
那'多gpu'
, 和'平行线'
选项需要并行计算工具箱™。要使用GPU进行深度学习,您还必须具有支持的GPU设备。万博1manbetx有关支持设备的信息,请参阅万博1manbetxGPU支万博1manbetx持情况(并行计算工具箱).如果选择其中一个选项和并行计算工具箱或合适的GPU不可用,则软件返回错误。
想要看到并行训练时的表现改善,试着扩大小匹匹匹匹配
和initiallearnrate.
培训选项的图形处理器的数量。
培训长短短期内存网络仅支持单个CPU或单个GPU培训。万博1manbetx
用于多gpu训练或并行训练的数据存储必须是可分区的。有关更多信息,请参阅使用数据存储进行并行培训和背景调度.
如果你使用'多gpu'
具有分区输入数据存储的选项和'disparctinbackground'
选项,然后软件启动一个大小等于默认池大小的并行池。工人与独特的图形处理器执行训练计算。其余工人用于后台调度。
例子:'executionenvironment','cpu'
'Workload'
-平行工人加载部门在gpu或cpu之间进行并行工作负载划分,指定为逗号分隔的对'Workload'
和以下之一:
标量从0到1 - 每台机器上的工人的分数,用于网络训练计算。如果您使用启用后台分派的迷你批处理数据存储中的数据来训练网络,那么其余的工作人员将在后台获取和预处理数据。
正整数-用于网络训练计算的每台机器上的工人数量。如果您使用启用后台分派的迷你批处理数据存储中的数据来训练网络,那么其余的工作人员将在后台获取和预处理数据。
数字向量-网络训练负荷为并行池中的每个工作者。为一个向量W.
,工人一世
一小部分w(i)/总和(w)
工作的数量(每个小批量的示例数量)。如果您使用启用了后台调度的迷你批处理数据存储中的数据来训练网络,那么您可以将一个worker负载分配为0,以便使用该worker在后台获取数据。指定的向量必须为并行池中的每个工作者包含一个值。
如果并行池可以访问GPU,那么没有唯一GPU的worker将不会被用于训练计算。默认的GPU池是使用所有具有唯一GPU的worker进行训练计算,其余的worker用于后台调度。如果池不能访问用于培训的gpu和cpu,则默认为每台机器使用一个worker来进行后台数据调度。
'disparctinbackground'
-使用背景调度错误的
(默认)|真的
使用后台调度(异步预取队列)从数据存储中读取培训数据,指定为错误的
或者真的
.后台调度需要并行计算工具箱。
DispatchInBackground
仅支持分区的数据万博1manbetx存储。有关更多信息,请参阅使用数据存储进行并行培训和背景调度.
'checkpoinspath'
-保存检查点网络的路径''
(默认)|特征向量保存检查点网络的路径,指定为由逗号分隔的对组成'checkpoinspath'
和一个字符矢量。
如果不指定路径(即使用默认路径)''
),然后软件不保存任何检查点网络。
如果指定路径,那么Trainnetwork.
在每个epoch之后将检查点网络保存到此路径,并为每个网络分配唯一名称。然后,您可以加载任何检查点网络并从该网络恢复培训。
如果文件夹不存在,则必须首先创建它,然后再指定保存检查点网络的路径。如果指定的路径不存在,则培训选项
返回错误。
有关保存网络检查点的详细信息,请参阅保存检查点网络并恢复培训.
例子:“CheckpointPath”、“C: \ Temp \检查点”
数据类型:char
“OutputFcn”
-输出功能在培训期间调用的输出函数指定为逗号分隔对“OutputFcn”
以及函数句柄或函数句柄的单元数组。Trainnetwork.
在培训开始之前调用指定的功能一次,每次迭代后,培训完成后一次。Trainnetwork.
传递一个包含以下字段信息的结构:
场地 | 描述 |
---|---|
时代 |
当前的纪元数 |
迭代 |
当前的迭代号码 |
TimesIncestart. |
自培训开始以来的时间 |
培训俱乐部 |
当前mini-batch损失 |
验证录 |
验证数据的丢失 |
基准 |
当前基础学习率 |
训练造成的训练 |
当前迷你批处理的准确性(分类网络) |
培训渣 |
RMSE在当前迷你批处理(回归网络) |
验证成数 |
验证数据的准确性(分类网络) |
ValidationRMSE |
RMSE在验证数据上(回归网络) |
状态 |
当前训练状态,可能值为“开始” 那“迭代” , 或者“完毕” |
如果某个字段对输出函数的某个调用不计算或不相关,则该字段包含一个空数组。
您可以使用输出函数来显示或绘制进度信息,或停止培训。尽早停止训练,让你的输出功能回归真的
.如果有输出函数返回真的
然后训练完成和Trainnetwork.
返回最新网络。有关展示如何使用输出功能的示例,请参阅在深度学习网络培训期间自定义输出.
数据类型:function_handle.
|细胞
选项
- 培训选项TrainingOptionsSGDM.
|TrainingOptionsRMSProp
|TrainingOptionsAdam.
培训选择,作为一个返回TrainingOptionsSGDM.
那TrainingOptionsRMSProp
, 或者TrainingOptionsAdam.
目的。要培训神经网络,请使用培训选项作为输入参数Trainnetwork.
功能。
如果solvername.
等于'sgdm'
那'rmsprop'
, 或者'亚当'
,则训练选项将作为TrainingOptionsSGDM.
那TrainingOptionsRMSProp
, 或者TrainingOptionsAdam.
对象,分别。
您可以编辑培训选项属性TrainingOptionsSGDM.
那TrainingOptionsAdam.
, 和TrainingOptionsRMSProp
直接对象。例如,在使用后更改迷你批量大小培训选项
功能,可以编辑小匹匹匹匹配
房地产直接:
选择= trainingOptions(个);选项。MiniBatchSize = 64;
对于大多数深度学习任务,您可以使用备用网络并将其调整到您自己的数据。出于一个示例,展示了如何使用传输学习培育卷积神经网络以对新一组图像进行分类,请参阅训练深度学习网络对新图像进行分类.或者,您可以使用划痕创建和培训网络分层图
的对象Trainnetwork.
和培训选项
功能。
如果是培训选项
函数不提供任务所需的训练选项,则可以使用自动区分创建自定义训练循环。想要了解更多,请看为自定义训练循环定义深度学习网络.
对于卷积层和全连通层,权值和偏差的初始化由掌控度
和BiasInitializer
属性的层,分别。有关如何更改权重和偏差的初始化的示例,请参见在卷积层中指定初始权重和偏差和在完全连接的图层中指定初始权重和偏置.
标准梯度缩减算法更新网络参数(权重和偏置)以通过在损耗的负梯度方向上采取小步骤来最小化损耗功能,
在哪里 是迭代号码, 是学习率, 是参数矢量,还有 是损失功能。在标准梯度下降算法中,损耗功能的梯度, ,使用整个训练集进行评估,而标准梯度下降算法一次使用整个数据集。
相反,在每次迭代时随机梯度下降算法评估梯度并使用训练数据的子集更新参数。在每个迭代中使用不同的子集,称为迷你批次。培训算法在使用迷你批次的整个训练集中的完整通行证是一个时代.随机梯度下降是随机的,因为使用迷你批处理计算的参数更新是使用完整数据集来导致的参数更新的噪声估计。您可以使用该方法指定迷你批量大小和时代的最大数量“MiniBatchSize”
和“MaxEpochs”
名称值对参数分别。
随机梯度下降算法可以沿着最陡的路径振荡朝向最佳的路径振荡。将动量术语添加到参数更新是减少此振荡的一种方法[2].随机梯度动量下降(SGDM)更新为
在哪里
确定上一个梯度步骤对当前迭代的贡献。属性指定此值'势头'
名称-值对的论点。使用随机梯度下降与动量算法训练神经网络,指定solvername.
作为'sgdm'
.要指定学习率α的初始值,请使用'italllearnrate'
名称-值对的论点。您还可以为不同的层和参数指定不同的学习速率。有关更多信息,请参阅在卷积和全连接层中设置参数.
随机梯度下降,动量使用所有参数的单一学习率。其他优化算法寻求通过使用参数不同的学习率来改善网络培训,并且可以自动适应优化的损耗功能。RMSPROP(均方方广场传播)是一种这样的算法。它保持参数梯度的元素方方体的平均值,
β2为移动平均线的衰减率。常见的衰减率值为0.9、0.99和0.999。相应的平方梯度的平均长度相等1 /(1-β2),即10,100和1000个参数更新。您可以指定β2通过使用'squaredgradientdecayfactor'
名称-值对的论点。RMSProp算法使用此移动平均值单独地将每个参数的更新标准化,
该部门的元素明智的地方。使用RMSPROP有效地降低了大梯度的参数的学习率,并增加了小梯度的参数的学习率。ɛ是一个小常数添加以避免分裂零。您可以指定ɛ通过使用‘ε’
名称值对参数,但默认值通常很好。使用RMSPROP培训神经网络,指定solvername.
作为'rmsprop'
.
亚当(衍生自自适应估计时刻)[4]使用类似于RMSProp的参数更新,但是有一个额外的动量术语。它保持了参数梯度和它们平方值的元素明智的平均值,
您可以指定β1和β2使用衰变率'gradientdecayfactor'
和'squaredgradientdecayfactor'
名称值对参数分别。亚当使用移动平均线来更新网络参数
如果在许多迭代上的渐变是相似的,则使用梯度的移动平均值使参数更新能够在某个方向上拾取势头。如果梯度大多包含噪声,则梯度的移动平均值变小,因此参数更新也变小。您可以指定ɛ通过使用‘ε’
名称-值对的论点。默认值通常效果很好,但对于某些问题,一个大约1的值更好。要使用亚当培训神经网络,请指定solvername.
作为'亚当'
.完整的ADAM更新还包括纠正培训开始时出现的偏差的机制。有关更多信息,请参阅[4].
指定学习速率α.用于所有优化算法使用'italllearnrate'
名称-值对的论点。对于不同优化算法,学习率的影响是不同的,因此最佳学习率通常也不同。您还可以指定不同层次和参数的学习率。有关更多信息,请参阅在卷积和全连接层中设置参数.
如果梯度呈指数级增大,则培训不稳定,并且可以在几个迭代中发散。这种“渐变爆炸”是由培训损失表示的南
或者正
.梯度剪辑通过在较高的学习率和异常值存在的情况下稳定训练,有助于防止梯度爆炸[3].梯度裁剪可以更快地训练网络,而且通常不会影响学习任务的准确性。
有两种类型的渐变剪辑。
基于norm的梯度裁剪基于阈值缩放梯度,而不改变梯度的方向。这'l2norm'
和'global-l2norm'
的值GradientThresholdMethod.
是基于规范的梯度剪辑方法。
基于值的梯度剪辑剪辑的任何部分导数大于阈值,这可能导致梯度任意改变方向。基于价值的梯度剪辑可以具有不可预测的行为,但是足够的变化不会导致网络发散。这'绝对值'
的价值GradientThresholdMethod.
是一种基于值的梯度剪切方法。
对于例子,见基于深度学习的时间序列预测和基于深度学习的序列到序列分类.
向损耗函数添加重量的正则化术语 是减少过度装箱的一种方法[1]那[2].还调用正则化术语体重衰变.具有正则化术语的损失函数采用表格
在哪里 是体重矢量, 是正则化因子(系数)和正则化函数 是
请注意,偏差不正常化[2].您可以指定正则化因子
通过使用“L2Regularization”
名称-值对的论点。您还可以为不同的图层和参数指定不同的正则化因子。有关更多信息,请参阅在卷积和全连接层中设置参数.
软件用于网络培训的丢失功能包括正则化术语。但是,在培训期间命令窗口和培训进度图中显示的损失值是数据上的损失,不包括正则化术语。
[1]毕晓普模式识别和机器学习.Springer,纽约,NY,2006年。
[2]墨菲,K .P。机器学习:概率的观点.麻省理工学院,剑桥,马萨诸塞州,2012年。
帕斯卡努,R., T. Mikolov, Y. Bengio。“关于训练递归神经网络的困难”。第30届机器学习会议的诉讼程序.[j] .岩石力学与工程学报,2013,34(3):341 - 346。
[4]金玛,迪德里克和吉米·巴。"亚当:随机优化的方法"ARXIV预印亚克日期:1412.6980(2014)。
您单击了与此MATLAB命令对应的链接:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。万博1manbetx
您还可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。