TrainingOptionsSGDM

带动量的随机梯度下降的训练选项

描述

带动量的随机梯度下降训练选项,包括学习率信息,L2正则化因子和小批量尺寸。

创建

创建一个TrainingOptionsSGDM对象使用trainingOptions并指定“个”随着solverName输入参数。

属性

全部展开

情节和显示

网络训练过程中显示的图,指定为:

  • “没有”-在训练期间不要显示情节。

  • “训练进步”-规划培训进度。该图显示了小批损失和准确性,验证损失和准确性,以及培训进展的附加信息。这个情节有一个停止按钮在右上角。点击按钮停止训练,返回网络当前状态。

在命令窗口显示训练进度信息的指示符,指定为1真正的)或0).

显示的信息包括历元数、迭代数、经过的时间、小批损失、小批准确性和基础学习率。当你训练一个回归网络时,显示的是均方根误差(RMSE)而不是精度。如果您在训练期间验证网络,那么显示的信息还包括验证损失和验证准确性(或RMSE)。

数据类型:逻辑

详细打印的频率,即在打印到命令窗口之间的迭代次数,指定为正整数。此属性仅在详细的值=真正的

如果你在训练期间验证网络,那么trainNetwork每次验证发生时打印到命令窗口。

Mini-Batch选项

用于训练的最大纪元数,指定为正整数。

迭代是梯度下降算法中使用小批量最小化损失函数的一步。epoch是训练算法在整个训练集上的完整通过。

用于每个训练迭代的小批处理的大小,指定为正整数。小批量是训练集的子集,用于评估损失函数的梯度和更新权值。

数据变换选项,指定为以下选项之一:

  • “一次”—在训练前洗牌一次训练和验证数据。

  • “永远”—禁止shuffle数据。

  • “every-epoch”—在每个训练阶段之前洗牌训练数据,在每个网络验证之前洗牌验证数据。如果小批量大小不能均匀地除以训练样本的数量,那么trainNetwork丢弃不适合每个纪元的最终完整小批的训练数据。设置洗牌价值“every-epoch”避免在每个epoch中丢弃相同的数据。

验证

用于训练期间验证的数据,指定为图像数据存储、以两列表或两列单元格数组、表或单元格数组返回数据的数据存储。验证数据的格式取决于任务的类型,并对应于有效的输入trainNetwork函数。

此选项只支持单一输入的网万博1manbetx络。

图像数据

对于图像数据,指定验证数据为以下数据之一:

输入 描述 更多的信息
图像数据存储

ImageDatastore对象与分类标签。

洛桑国际管理发展学院的观点trainNetwork
数据存储 返回两列表或两列单元格数组中的数据的数据存储,其中两列分别指定网络输入和预期响应。 ds的观点trainNetwork
表格

表,其中第一列包含图像路径或图像,后续列包含响应。

资源描述的观点trainNetwork
单元阵列{X, Y} X

图像的数字数组。

X的观点trainNetwork
Y

标签的分类向量,数字响应的矩阵,或图像数组。

Y的观点trainNetwork

序列和时间序列数据

对于序列和时间序列数据,指定验证数据为以下数据之一:

输入 描述 更多的信息
单元阵列{序列,Y} 序列

单元格数组的序列或时间序列数据。

序列的观点trainNetwork
Y

标签的类别向量、类别序列的单元数组、数字响应的矩阵或数字序列的单元数组。

Y的观点trainNetwork
表格

包含到包含序列或时间序列数据的MAT文件的绝对或相对文件路径的表。

资源描述的观点trainNetwork

在培训期间,trainNetwork计算验证数据的验证精度和验证损失。要指定验证频率,请使用“ValidationFrequency”名称-值对的论点。您还可以使用验证数据在验证损失停止减少时自动停止训练。要启用自动验证停止,请使用“ValidationPatience”名称-值对的论点。

如果网络的层在预测期间的行为与训练期间的行为不同(例如,退出层),那么验证的准确性可以高于训练(小批量)的准确性。

将验证数据按照“洗牌”价值。如果“洗牌”值=“every-epoch”,然后在每次网络验证之前对验证数据进行洗牌。

以迭代次数表示的网络验证频率,指定为正整数。

ValidationFrequency值是验证度量的评估之间的迭代次数。

网络训练的验证停止的耐心,指定为正整数或

“ValidationPatience”值是在网络训练停止前,验证集上的损失可能大于或等于先前最小损失的次数。

解算器选项

用于训练的初始学习率,指定为正标量。如果学习率太低,那么培训需要很长时间。如果学习率过高,那么训练就会达到次优结果。

学习率计划的设置,指定为一个结构。LearnRateScheduleSettings有场方法,指定调整学习率的方法类型。可能的方法有:

  • “没有”-在整个训练过程中,学习率是恒定的。

  • “分段”—在训练过程中,学习率周期性下降。

如果方法“分段”,然后LearnRateScheduleSettings包含另外两个字段:

  • DropRateFactor-训练过程中学习率下降的乘数

  • DropPeriod-在训练过程中,从调整到学习速率之间的周期数

使用指定学习计划速率的设置trainingOptions

数据类型:结构体

L因素2正则化器(权值衰减),指定为非负标量。

你可以为L指定一个乘数2具有可学习参数的网络层正则化器。

从以前的迭代到当前的迭代的梯度步骤的贡献,指定为从0到1的标量值。0表示前一步没有贡献,1表示前一步贡献最大。有关不同求解器的更多信息,请参见随机梯度下降法

梯度剪裁

梯度的正阈值,指定为正标量或.当梯度值超过GradientThreshold,然后根据渐变进行裁剪GradientThresholdMethod

梯度阈值方法,用于裁剪超过梯度阈值的梯度值,具体如下:

  • “l2norm”-如果L2可学习参数的梯度范数大于GradientThreshold,然后缩放梯度,使L2规范=GradientThreshold

  • “global-l2norm”—全局L2规范,l,比GradientThreshold,然后将所有梯度按……的倍数缩放GradientThreshold /l.全球L2Norm考虑了所有可学习的参数。

  • “绝对值”—可学习参数梯度中单个偏导数的绝对值大于GradientThreshold,然后缩放偏导数,使其大小等于GradientThreshold保留偏导数的符号。

有关更多信息,请参见梯度剪裁

选项重置输入层归一化,指定为以下之一:

  • 真正的-重置输入层归一化统计并在训练时重新计算。

  • -当训练时间为空时,计算归一化统计信息。

序列的选择

填充、截断或拆分输入序列的选项,指定为以下之一:

  • “最长”—在每个小批量中填充序列,使其与最长序列具有相同的长度。这个选项不会丢弃任何数据,尽管填充会给网络带来噪声。

  • “最短”-截断每个小批中的序列,使其长度与最短序列相同。这个选项确保不添加任何填充,代价是丢弃数据。

  • 正整数—对于每个小批量,将序列填充到指定长度的最近倍数,该倍数大于最小批量中序列的最长长度,然后将序列分割成指定长度的更小的序列。如果发生分裂,则软件创建额外的小批量。如果完整序列无法装入内存,则使用此选项。或者,尝试通过设置来减少每个小批量的序列数量“MiniBatchSize”选择较低的值。

要了解更多关于填充、截断和分割输入序列的效果,请参见序列填充、截断和分割

填充或截断的方向,指定为下列任一种:

  • “对”—在右侧填充或截断序列。序列在同一时间步开始,软件截断或添加填充到序列的结束。

  • “左”-在左侧填充或截断序列。该软件截断或添加填充到序列的开始,以便序列在同一时间步结束。

因为LSTM层处理序列数据的时间一步一次,当层OutputMode属性是“最后一次”,最后时间步骤中的任何填充都会对层输出产生负面影响。要在左侧填充或截断序列数据,请设置“SequencePaddingDirection”选项“左”

对于序列到序列网络(当OutputMode属性是“序列”对于每个LSTM层),第一个时间步骤中的任何填充都会对较早时间步骤的预测产生负面影响。要在右侧填充或截断序列数据,请设置“SequencePaddingDirection”选项“对”

要了解更多关于填充、截断和分割输入序列的效果,请参见序列填充、截断和分割

值,用来填充作为标量指定的输入序列。该选项仅在以下情况下有效SequenceLength“最长”或者一个正整数。不要用,因为这样做会在整个网络中传播错误。

硬件选项

培训网络硬件资源,指定为以下之一:

  • “汽车”—如果有图形处理器,请使用图形处理器。否则,请使用CPU。

  • “cpu”—使用CPU。

  • “图形”—使用GPU。

  • “multi-gpu”-在一台机器上使用多个gpu,基于默认集群配置文件使用本地并行池。如果当前没有并行池,软件会启动一个并行池,池的大小等于可用gpu的数量。

  • “平行”-根据默认集群配置文件使用本地或远程并行池。如果当前没有并行池,软件将使用默认的集群配置文件启动一个并行池。如果池可以访问GPU,那么只有拥有唯一GPU的工作者才能进行训练计算。如果池没有gpu,则在所有可用的CPU worker上进行培训。

有关何时使用不同执行环境的更多信息,请参见并行和在云中扩展深度学习

GPU、多GPU和并行选项需要并行计算工具箱™。要使用GPU进行深度学习,还必须有CUDA®使英伟达®GPU,计算能力3.0或更高。如果您选择了这些选项之一,但并行计算工具箱或合适的GPU不可用,则软件返回错误。

想要看到并行训练时的表现改善,试着扩大MiniBatchSizeInitialLearnRate培训选项的图形处理器的数量。

训练长短期记忆网络仅支持单CPU或单GPU训练。万博1manbetx

指定使用的执行环境trainingOptions

数据类型:字符|字符串

gpu或cpu的工作负载划分,指定为从0到1的标量、正整数或数字向量。此属性仅在ExecutionEnvironment值=“multi-gpu”“平行”

检查点

保存检查点网络的路径,指定为字符向量。

数据类型:字符

在训练期间要调用的输出函数,指定为函数句柄或函数句柄的单元数组。trainNetwork在训练开始之前、每次迭代之后以及训练结束之后调用指定的函数一次。trainNetwork传递一个包含以下字段信息的结构:

描述
时代 当前时代数量
迭代 当前迭代次数
TimeSinceStart 训练开始后的时间,以秒为单位
TrainingLoss 当前mini-batch损失
ValidationLoss 验证数据的丢失
BaseLearnRate 当前基础学习率
TrainingAccuracy 当前小批量的准确性(分类网络)
TrainingRMSE 当前小批处理(回归网络)上的RMSE
ValidationAccuracy 验证数据的准确性(分类网络)
ValidationRMSE 验证数据的RMSE(回归网络)
状态 当前训练状态,可能值为“开始”“迭代”,或“完成”

如果某个字段对输出函数的某个调用不计算或不相关,则该字段包含一个空数组。

您可以使用输出函数来显示或绘制进度信息,或停止培训。尽早停止训练,让你的输出功能回归真正的.如果有输出函数返回真正的,然后训练结束trainNetwork返回最新的网络。有关如何使用输出函数的示例,请参见自定义深度学习网络训练输出

数据类型:function_handle|细胞

例子

全部折叠

创建一组选项来训练网络使用随机梯度下降与动量。每5个周期将学习率降低0.2倍。将训练的最大纪元数设置为20,并在每次迭代中使用包含64个观察值的小批处理。打开训练进度图。

选择= trainingOptions (“个”...“LearnRateSchedule”“分段”...“LearnRateDropFactor”, 0.2,...“LearnRateDropPeriod”5,...“MaxEpochs”, 20岁,...“MiniBatchSize”, 64,...“阴谋”“训练进步”
选择= TrainingOptionsSGDM属性:动力:0.9000 InitialLearnRate: 0.0100 LearnRateSchedule:“分段”LearnRateDropFactor: 0.2000 LearnRateDropPeriod: 5 L2Regularization: 1.0000 e-04 GradientThresholdMethod:“l2norm”GradientThreshold:正MaxEpochs: 20 MiniBatchSize: 64详细:1 VerboseFrequency: 50 ValidationData:[] ValidationFrequency: 50 ValidationPatience:正洗牌:“一旦”CheckpointPath:“ExecutionEnvironment:‘汽车’WorkerLoad: [] OutputFcn:[]阴谋:“训练进步”SequenceLength:“最长”SequencePaddingValue: 0 SequencePaddingDirection:“对”DispatchInBackground: 0 ResetInputNormalization: 1

介绍了R2016a