RMSProp优化器的训练选项
RMSProp(均方根传播)优化器的训练选项,包括学习率信息,L2正则化因子和小批量大小。
创建一个TrainingOptionsRMSProp
对象使用trainingOptions
并指定“rmsprop”
随着solverName
输入参数。
情节
- - - - - -网络训练时显示的图“没有”
|“训练进步”
在网络训练期间显示的图,指定为以下之一:
“没有”
—训练过程中严禁展示情节。
“训练进步”
-情节训练进度。该图显示了小批损失和准确性,验证损失和准确性,以及关于训练进度的附加信息。该情节有一个停止按钮在右上角。点击按钮停止训练,返回网络当前状态。
详细的
- - - - - -显示培训进度信息的指示器1
(真正的)(默认)|0
(假)在命令窗口中显示培训进度信息的指示器,指定为1
(真正的)或0
(假)。
详细输出显示如下信息:
网络的分类
场 | 描述 |
---|---|
时代 |
时代的数字。epoch对应于数据的完整传递。 |
迭代 |
迭代数。迭代对应于一个小批处理。 |
时间 |
时间以小时、分钟和秒为单位流逝。 |
Mini-batch准确性 |
小批量分类的准确性。 |
验证准确性 |
验证数据的分类精度。如果不指定验证数据,则函数不会显示此字段。 |
Mini-batch损失 |
小批上的损失。如果输出层是aClassificationOutputLayer 对象,则对于互斥类的多类分类问题,损失为交叉熵损失。 |
确认损失 |
验证数据的损失。如果输出层是aClassificationOutputLayer 对象,则对于互斥类的多类分类问题,损失为交叉熵损失。如果不指定验证数据,则函数不会显示此字段。 |
基础学习率 |
基础学习率。软件将各层的学习速率因子乘以这个值。 |
回归网络
场 | 描述 |
---|---|
时代 |
时代的数字。epoch对应于数据的完整传递。 |
迭代 |
迭代数。迭代对应于一个小批处理。 |
时间 |
时间以小时、分钟和秒为单位流逝。 |
Mini-batch RMSE |
小批上的均方根误差(RMSE)。 |
验证RMSE |
验证数据上的RMSE。如果不指定验证数据,则软件不会显示此字段。 |
Mini-batch损失 |
小批上的损失。如果输出层是aRegressionOutputLayer 对象,则损失为半均方误差。 |
确认损失 |
验证数据的损失。如果输出层是aRegressionOutputLayer 对象,则损失为半均方误差。如果不指定验证数据,则软件不会显示此字段。 |
基础学习率 |
基础学习率。软件将各层的学习速率因子乘以这个值。 |
当训练停止时,详细输出显示停止的原因。
要指定验证数据,请使用ValidationData
培训的选择。
数据类型:逻辑
VerboseFrequency
- - - - - -详细打印的频率详细打印的频率,即打印到命令窗口之间的迭代次数,指定为正整数。属性时,此属性才有效详细的
值=真正的
.
如果你在训练期间验证了网络,那么trainNetwork
每次验证发生时打印到命令窗口。
MaxEpochs
- - - - - -最大epoch数用于训练的最大epoch数,指定为正整数。
迭代是梯度下降算法中使用小批最小化损失函数的一个步骤。epoch是训练算法在整个训练集上的完整传递。
MiniBatchSize
- - - - - -小批尺寸用于每个训练迭代的小批的大小,指定为正整数。迷你批处理是训练集的子集,用于评估损失函数的梯度并更新权重。
洗牌
- - - - - -数据变换选项“一次”
|“永远”
|“every-epoch”
数据变换选项,指定为以下之一:
“一次”
-在培训前对培训和验证数据进行一次洗牌。
“永远”
—禁止数据shuffle。
“every-epoch”
-在每个训练纪元之前洗牌训练数据,在每个网络验证之前洗牌验证数据。如果小批量大小没有平均分配训练样本的数量,则trainNetwork
丢弃不适合每个epoch的最后完整小批的训练数据。设置洗牌
价值“every-epoch”
避免在每个纪元丢弃相同的数据。
ValidationData
- - - - - -培训期间用于验证的数据训练期间用于验证的数据,指定为包含验证预测器和响应的数据存储区、表或单元格数组。
类支持的相同格式可以指定验证预测器和响应金宝apptrainNetwork
函数。可以将验证数据指定为数据存储、表或单元格数组}{预测,反应
,在那里预测
包含验证预测器和反应
包含验证响应。
有关更多信息,请参见图片
,序列
,特性
的输入参数trainNetwork
函数。
在培训期间,trainNetwork
计算验证数据的验证精度和验证损失。要指定验证频率,请使用ValidationFrequency
培训的选择。您还可以使用验证数据在验证损失停止减少时自动停止训练。若要启用自动验证停止,请使用ValidationPatience
培训的选择。
如果你的网络在预测期间的行为与训练期间的行为不同(例如,退出层),那么验证精度可以高于训练(小批量)精度。
验证数据根据洗牌
培训的选择。如果洗牌
是“every-epoch”
,然后在每次网络验证之前对验证数据进行洗牌。
ValidationFrequency
- - - - - -网络验证频率网络验证在迭代次数中的频率,指定为正整数。
的ValidationFrequency
值是验证指标评估之间的迭代次数。
ValidationPatience
- - - - - -停止验证的耐心正
(默认)|正整数网络训练的验证停止耐心,指定为正整数或正
.
ValidationPatience
指定在网络训练停止之前,验证集上的损失可以大于或等于之前最小损失的次数。如果ValidationPatience
是正
,则验证损失的值不会导致训练提前停止。
返回的网络依赖于OutputNetwork
培训的选择。若要返回具有最低验证损失的网络,请设置OutputNetwork
培训选项“best-validation-loss”
.
OutputNetwork
- - - - - -培训完成后返回网络最后一次迭代的
(默认)|“best-validation-loss”
网络在培训完成时返回,指定为以下之一:
最后一次迭代的
-返回上次训练迭代对应的网络。
“best-validation-loss”
-返回验证损失最小的训练迭代所对应的网络。若要使用此选项,必须指定“ValidationData”
.
InitialLearnRate
- - - - - -初始学习率用于训练的初始学习率,指定为正标量。如果学习率太低,那么训练就需要很长时间。如果学习率太高,那么训练可能会达到次优结果。
LearnRateScheduleSettings
- - - - - -学习率计划的设置学习率计划的设置,以结构形式指定。LearnRateScheduleSettings
有场地方法
,指定调整学习率的方法类型。可能的方法是:
“没有”
-在整个训练过程中,学习率是恒定的。
“分段”
—在训练过程中,学习率会周期性下降。
如果方法
是“分段”
,然后LearnRateScheduleSettings
包含两个字段:
DropRateFactor
-在训练期间学习率下降的乘法因子
DropPeriod
-在训练过程中,调整到学习率之间所经过的epoch数
使用指定学习进度速率的设置trainingOptions
.
数据类型:结构体
L2Regularization
- - - - - -L的因子2规范L的因子2正则化(权重衰减),指定为非负标量。
您可以为L指定一个乘数2具有可学习参数的网络层的正则器。
SquaredGradientDecayFactor
- - - - - -平方梯度移动平均衰减率梯度移动平均的平方衰减率,指定为从0到1的标量。有关不同求解器的更多信息,请参见随机梯度下降.
ε
- - - - - -分母抵消分母偏移量,指定为正标量。求解器将偏移量添加到网络参数更新中的分母上,以避免除零。
ResetInputNormalization
- - - - - -选项重置输入层归一化真正的
(默认)|假
重置输入层规范化的选项,指定为以下之一:
真正的
-重置输入层归一化统计数据,并在训练时重新计算。
假
-当训练时间统计数据为空时,计算归一化统计数据。
BatchNormalizationStatistics
- - - - - -在批处理归一化层中计算统计信息的模式“人口”
(默认)|“移动”
在批处理归一化层中计算统计数据的模式,指定为以下之一:
“人口”
-使用人口统计数据。训练结束后,软件通过再次传递训练数据来完成统计,并使用得到的平均值和方差。
“移动”
-使用更新步骤给出的运行估计来估计训练期间的统计数据
在哪里 而且 分别表示更新后的均值和方差, 而且 分别表示均值和方差衰减值, 而且 分别表示层输入的平均值和方差,和 而且 分别表示移动平均值和方差值的最新值。训练后,软件使用移动平均值和方差统计的最新值。此选项仅支持CPU和单G金宝appPU训练。
GradientThreshold
- - - - - -梯度阈值正
梯度的正阈值,指定为正标量或正
.的值时GradientThreshold
,则根据剪切梯度GradientThresholdMethod
.
GradientThresholdMethod
- - - - - -梯度阈值法“l2norm”
|“global-l2norm”
|“absolutevalue”
梯度阈值方法用于剪辑超过梯度阈值的梯度值,指定为以下之一:
“l2norm”
-如果L2可学习参数的梯度范数大于GradientThreshold
,然后缩放梯度,使L2规范=GradientThreshold
.
“global-l2norm”
—如果全局L2规范,l,大于GradientThreshold
,然后将所有梯度按倍缩放GradientThreshold /
l.全局L2Norm考虑所有可学习参数。
“绝对值”
-如果一个可学习参数的梯度中个别偏导数的绝对值大于GradientThreshold
,然后将偏导数缩放为GradientThreshold
保留偏导数的符号。
有关更多信息,请参见梯度剪裁.
SequenceLength
- - - - - -选项垫或截断序列“最长”
|“最短”
|正整数填充、截断或分割输入序列的选项,指定为下列之一:
“最长”
-每个小批中的衬垫序列与最长序列具有相同的长度。这个选项不会丢弃任何数据,尽管填充会给网络带来噪声。
“最短”
-截断每个小批中的序列,使其长度与最短序列相同。此选项确保不添加填充,但要以丢弃数据为代价。
正整数-对于每个迷你批,将序列填充到指定长度的最近倍数,该倍数大于迷你批中最长的序列长度,然后将序列分割为指定长度的更小序列。如果发生分裂,那么软件将创建额外的小批。如果完整序列不适合内存,请使用此选项。或者,尝试通过设置。来减少每个小批的序列数“MiniBatchSize”
选择较低的值。
有关填充、截断和分隔输入序列的效果的详细信息,请参见序列填充,截断和分割.
SequencePaddingDirection
- - - - - -填充或截断的方向“对”
(默认)|“左”
填充或截断方向,指定为下列之一:
“对”
-填充或截断右边的序列。序列在同一时间步开始,软件截断或增加填充序列的结束。
“左”
-填充或截断左边的序列。该软件截断或添加填充到序列的开始,以便序列在同一时间步结束。
由于LSTM层处理序列数据一次一步,当层OutputMode
属性是“最后一次”
,最后时间步长的任何填充都会对层输出产生负面影响。若要在左侧填充或截断序列数据,请设置“SequencePaddingDirection”
选项“左”
.
对于序列对序列网络(当OutputMode
属性是“序列”
对于每个LSTM层),第一时间步中的任何填充都会对早期时间步的预测产生负面影响。若要在右侧填充或截断序列数据,请设置“SequencePaddingDirection”
选项“对”
.
有关填充、截断和分隔输入序列的效果的详细信息,请参见序列填充,截断和分割.
SequencePaddingValue
- - - - - -填充序列的值用于填充输入序列的值,指定为标量。该选项仅当SequenceLength
是“最长”
或者一个正整数。不垫序列用南
,因为这样做会在整个网络中传播错误。
ExecutionEnvironment
- - - - - -培训网络硬件资源“汽车”
|“cpu”
|“图形”
|“multi-gpu”
|“平行”
用于培训网络的硬件资源,指定为下列之一:
“汽车”
—如果有图形处理器,请使用图形处理器。否则请使用CPU。
“cpu”
—使用CPU。
“图形”
—使用GPU。
“multi-gpu”
—在一台机器上使用多个gpu,使用基于默认集群配置文件的本地并行池。如果当前没有并行池,软件将启动一个大小等于可用gpu数量的并行池。
“平行”
—根据默认集群配置文件,使用本地或远端并行池。如果当前没有并行池,软件将使用默认集群配置文件启动一个并行池。如果池可以访问GPU,那么只有具有唯一GPU的工作者才能执行训练计算。如果池中没有gpu,则对所有可用的CPU worker进行培训。
有关何时使用不同执行环境的详细信息,请参见并行、gpu和云中扩展深度学习.
“图形”
,“multi-gpu”
,“平行”
选项需要并行计算工具箱™。要使用GPU进行深度学习,还必须有支持GPU的设备。金宝app有关受支持设备的信息,请参见金宝appGPU支金宝app持版本(并行计算工具箱).如果您选择了这些选项之一,而并行计算工具箱或合适的GPU不可用,则软件将返回一个错误。
要想在并行训练时看到性能的改善,请尝试扩大训练的规模MiniBatchSize
而且InitialLearnRate
训练选项的gpu数量。
训练长短期记忆网络只支持单CPU或单GPU训练。金宝app
使用指定执行环境trainingOptions
.
数据类型:字符
|字符串
WorkerLoad
- - - - - -并联工人负荷分配gpu或cpu的工作负载划分,指定为从0到1的标量、正整数或数字矢量。属性时,此属性才有效ExecutionEnvironment
值=“multi-gpu”
或“平行”
.
CheckpointPath
- - - - - -检查点网络保存路径检查点网络保存的路径,指定为字符向量。
数据类型:字符
OutputFcn
- - - - - -输出函数输出要在训练期间调用的函数,指定为函数句柄或函数句柄的单元格数组。trainNetwork
在训练开始前、每次迭代之后和训练结束后调用指定的函数一次。trainNetwork
传递一个包含以下字段信息的结构:
场 | 描述 |
---|---|
时代 |
当前纪元数 |
迭代 |
当前迭代次数 |
TimeSinceStart |
时间单位为秒,从训练开始算起 |
TrainingLoss |
电流小批损耗 |
ValidationLoss |
验证数据的损失 |
BaseLearnRate |
当前基本学习率 |
TrainingAccuracy |
当前小批的准确性(分类网络) |
TrainingRMSE |
当前小批上的RMSE(回归网络) |
ValidationAccuracy |
验证数据的准确性(分类网络) |
ValidationRMSE |
验证数据的RMSE(回归网络) |
状态 |
当前训练状态,可能值为“开始” ,“迭代” ,或“完成” . |
如果一个字段不是计算出来的,或者与输出函数的某个调用无关,那么该字段包含一个空数组。
您可以使用输出函数来显示或绘制进度信息,或者停止训练。为了尽早停止训练,让输出函数返回真正的
.如果任何输出函数返回真正的
,然后训练结束trainNetwork
返回最新的网络。有关显示如何使用输出函数的示例,请参见深度学习网络训练中的自定义输出.
数据类型:function_handle
|细胞
使用RMSProp优化器创建一组用于训练神经网络的选项。将训练的最大epoch数设置为20,并在每次迭代中使用64个观测值的迷你批处理。指定学习率和梯度平方移动平均的衰减率。打开训练进度图。
选项= trainingOptions(“rmsprop”,...“InitialLearnRate”3的军医,...“SquaredGradientDecayFactor”, 0.99,...“MaxEpochs”, 20岁,...“MiniBatchSize”, 64,...“阴谋”,“训练进步”)
options = TrainingOptionsRMSProp与属性:SquaredGradientDecayFactor: 0.9900 Epsilon: 1.0000 -08 InitialLearnRate: 3.0000 -04 learnratesschedule: 'none' LearnRateDropFactor: 0.1000 LearnRateDropPeriod: 10 L2Regularization: 1.0000 -04 GradientThresholdMethod: 'l2norm' GradientThreshold: Inf MaxEpochs: 20 MiniBatchSize: 64 Verbose: 1 VerboseFrequency: 50 ValidationData: [] ValidationFrequency: 50 ValidationPatience: Inf Shuffle: 'once' CheckpointPath: " ExecutionEnvironment: "'auto' WorkerLoad: [] OutputFcn: [] Plots: 'training-progress' SequenceLength: 'longest' SequencePaddingValue: 0 SequencePaddingDirection: 'right' DispatchInBackground: 0 ResetInputNormalization: 1 BatchNormalizationStatistics: 'population' OutputNetwork: 'last-iteration'
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。