主要内容

trainingOptions

选择培训深度学习神经网络

描述

例子

选项= trainingOptions (solverName)返回指定的优化器训练选项solverName。训练一个神经网络,利用训练选项作为输入参数trainNetwork函数。

例子

选项= trainingOptions (solverName,名称=值)返回训练与附加选项指定一个或多个选项名称参数。

例子

全部折叠

创建一组选择训练一个网络使用随机梯度下降法和动力。减少学习速率的0.2倍每5时代。培训时期的最大数量设置为20,并使用与64年mini-batch观察每个迭代。打开培训进展阴谋。

选择= 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:”CheckpointFrequency: 1 CheckpointFrequencyUnit:“时代”ExecutionEnvironment:“汽车”WorkerLoad: [] OutputFcn:[]阴谋:“训练进步”SequenceLength:“最长”SequencePaddingValue: 0 SequencePaddingDirection:“对”DispatchInBackground: 0 ResetInputNormalization: 1 BatchNormalizationStatistics:“人口”OutputNetwork:最后一次迭代的

这个例子展示了如何监测深度学习网络的训练过程。

为深度学习培训网络时,它通常是有用的监测培训进展。通过策划各种指标在训练,你可以学习如何培训进展。例如,您可以决定是否以及如何快速网络精度提高,和网络是否开始overfit训练数据。

这个例子展示了如何监视培训进展网络训练使用trainNetwork函数。网络训练使用自定义训练循环,使用trainingProgressMonitor对象图指标在训练。有关更多信息,请参见监控定制培训循环的进展

当你设置情节培训选项“训练进步”trainingOptions并开始网络训练,trainNetwork创建一个图,显示在每个迭代训练指标。每个迭代是一个梯度估计和更新网络的参数。如果您指定验证数据trainingOptions每一次,那么图中显示验证指标trainNetwork验证网络。图块以下:

  • 训练精度——在每个mini-batch分类精度。

  • 平滑的训练精度——平滑训练精度,通过应用平滑算法来训练精度。比不光滑精度不太吵了,使其更容易发现趋势。

  • 验证准确性——分类精度在整个验证集(指定使用trainingOptions)。

  • 培训损失,平滑培训损失,确认损失——每个mini-batch上的损失,其平滑版本,分别和验证上的损失。如果你的网络是一个最后一层classificationLayer,那么损失函数是交叉熵的损失。关于损失函数的更多信息分类和回归问题,明白了输出层

回归网络、图块均方根误差(RMSE)的准确性。

这个数字是每个培训时代使用一个阴影的背景。一个时代是一个完整的通过整个数据集。

在培训期间,您可以停止训练并返回网络的当前状态通过单击停止按钮在右上角。例如,您可能想要阻止培训当网络的准确性达到高原,很明显,精度不再提高。单击停止按钮后,可能需要一段时间的训练来完成。培训完成后,trainNetwork返回训练网络。

培训结束时,查看结果显示完成验证准确性和培训完成的原因。如果OutputNetwork训练方法是“最后一次迭代的”(默认),最后确定的指标对应于迭代的最后一次训练。如果OutputNetwork训练方法是“best-validation-loss”,最后确定的指标对应于迭代验证最低的损失。最后的验证指标的迭代计算是标记最后的情节。

如果你的网络包含批量标准化层,最后验证指标可以是不同的验证指标评估在训练。这是因为均值和方差统计用于批处理规范化培训完成后可以是不同的。例如,如果BatchNormalizationStatisics训练方法是“人口”,然后训练后,软件使结束批规范化统计再次通过训练数据传递和使用结果的均值和方差。如果BatchNormalizationStatisics训练方法是“移动”,那么软件近似估计运行的统计数据在训练使用,并使用最新的统计值。

在右边,视图的信息训练时间和设置。了解更多关于训练选项,看看设置参数和卷积神经网络训练

保存培训进度图,点击出口培训策划在培训窗口中。你可以节省情节PNG, JPEG, TIFF或PDF文件。你也可以保存个人的损失,准确性,使用轴工具栏和根均方误差。

情节训练在训练进展

训练一个网络在训练和情节训练进展。

加载训练数据,其中包含5000位的图像。拨出1000的图片用于网络验证。

[XTrain, YTrain] = digitTrain4DArrayData;idx = randperm(大小(XTrain, 4), 1000);XValidation = XTrain (:,:,:, idx);XTrain (::,:, idx) = [];YValidation = YTrain (idx);YTrain (idx) = [];

构建一个网络对数字图像数据进行分类。

层= [imageInputLayer ([28 28 1]) convolution2dLayer(3 8填充=“相同”)batchNormalizationLayer reluLayer maxPooling2dLayer(2步= 2)convolution2dLayer(填充= 3,16日“相同”)batchNormalizationLayer reluLayer maxPooling2dLayer(2步= 2)convolution2dLayer(3、32、填充=“相同”)batchNormalizationLayer reluLayer fullyConnectedLayer (10) softmaxLayer classificationLayer];

为网络培训指定选项。验证网络定期培训期间,指定验证数据。选择ValidationFrequency值,这样每个时代网络验证一次。情节训练进展在培训,设置情节培训选项“训练进步”

选择= trainingOptions (“个”,MaxEpochs = 8,ValidationData = {XValidation, YValidation},ValidationFrequency = 30,Verbose = false,情节=“训练进步”);

培训网络。

网= trainNetwork (XTrain、YTrain层,选择);

图培训进展(03 - mar - 2023 09:03:18)包含2轴uigridlayout类型的对象和另一个对象。轴与包含迭代对象1,ylabel损失包含15块类型的对象,文本行。轴与包含迭代对象2,ylabel精度(%)包含15块类型的对象,文本行。

输入参数

全部折叠

训练神经网络解算器,指定为以下之一:

  • “个”——使用随机梯度下降势头(个)优化器。您可以指定使用动量值动力培训的选择。

  • “rmsprop”——RMSProp优化器使用。您可以指定的衰变率的平方梯度移动平均使用SquaredGradientDecayFactor培训的选择。

  • “亚当”——亚当优化器使用。您可以指定的衰变速率梯度和平方梯度移动平均线使用GradientDecayFactorSquaredGradientDecayFactor训练选项,分别。

解决更多信息的不同,看到的随机梯度下降法

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:InitialLearnRate = 0.03, L2Regularization = 0.0005, LearnRateSchedule =“分段”指定初始学习速率为0.03l2正则化因子为0.0005,指示软件放弃学习速率的每一个给定的数字时代通过乘以一定的因素。

情节和显示

全部折叠

情节显示在神经网络训练,指定为以下之一:

  • “没有”-不显示阴谋在训练。

  • “训练进步”——情节训练进展。情节显示mini-batch损失和精度,验证损失和准确性,和额外的信息在培训的进展。情节有一个停止按钮在右上角。单击该按钮停止训练,回归神经网络的当前状态。你可以节省培训策划作为一个图像或PDF点击出口培训策划。培训进展阴谋的更多信息,见监测深度学习培训的进展

指示器显示培训进展信息在命令窗口中,指定为1(真正的)或0(假)。

详细输出显示以下信息:

神经网络分类

描述
时代 时代的数字。一个时代对应的完整传递数据。
迭代 迭代数。迭代对应于一个mini-batch。
时间 时间以小时、分钟和秒。
Mini-batch准确性 mini-batch分类精度。
验证准确性 分类精度的验证数据。如果你不指定验证数据,然后函数不显示这一领域。
Mini-batch损失 mini-batch损失。如果输出层ClassificationOutputLayer对象,然后是多层次的交叉熵损失损失与互斥类分类问题。
确认损失 验证数据损失。如果输出层ClassificationOutputLayer对象,然后是多层次的交叉熵损失损失与互斥类分类问题。如果你不指定验证数据,然后函数不显示这一领域。
基础学习速率 基础学习速率。繁殖的软件学习速率因子层的这个值。

回归神经网络

描述
时代 时代的数字。一个时代对应的完整传递数据。
迭代 迭代数。迭代对应于一个mini-batch。
时间 时间以小时、分钟和秒。
Mini-batch RMSE mini-batch均方误差(RMSE)。
验证RMSE RMSE验证数据。如果你不指定验证数据,然后软件不显示这一领域。
Mini-batch损失 mini-batch损失。如果输出层RegressionOutputLayer对象,然后half-mean-squared-error损失。
确认损失 验证数据损失。如果输出层RegressionOutputLayer对象,然后half-mean-squared-error损失。如果你不指定验证数据,然后软件不显示这一领域。
基础学习速率 基础学习速率。繁殖的软件学习速率因子层的这个值。

当训练停止,详细输出显示停止的原因。

指定验证数据,使用ValidationData培训的选择。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑

详细的印刷、频率之间的迭代次数是印刷命令窗口,指定为一个正整数。这个选项只有当产生影响详细的训练方法是1(真正的)。

如果你验证神经网络在训练,那么trainNetwork也输出到命令窗口每次验证发生。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

Mini-Batch选项

全部折叠

最大数量的时代用于培训,指定为一个正整数。

迭代是一个步骤在梯度下降算法对使用mini-batch最小化损失函数。一个时代的全部通过整个训练集训练算法。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

mini-batch大小为每个迭代训练,使用指定为一个正整数。mini-batch是训练集的一个子集,它是用来评估损失函数的梯度和更新权重。

如果mini-batch大小不均匀划分训练样本的数量trainNetwork丢弃的训练数据不符合的最终完成mini-batch每个时代。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

选择数据洗牌,指定为以下之一:

  • “一次”——洗牌的培训和验证数据一次培训。

  • “永远”——不转移数据。

  • “every-epoch”——洗牌前训练数据训练时期,和洗牌每个神经网络验证前的验证数据。如果mini-batch大小不均匀划分训练样本的数量trainNetwork丢弃的训练数据不符合的最终完成mini-batch每个时代。为了避免丢弃每时代相同的数据,设置洗牌培训选项“every-epoch”

验证

全部折叠

数据用于验证培训期间,指定为[]、数据存储、表或一个单元阵列包含验证预测和响应。

您可以指定验证预测和响应使用相同的格式支持的万博1manbetxtrainNetwork函数。您可以指定验证数据作为一个数据存储,表,或单元阵列}{预测,反应,在那里预测包含验证预测和反应包含验证响应。

有关更多信息,请参见图片,序列,特性输入参数的trainNetwork函数。

在培训期间,trainNetwork计算验证准确性和验证验证数据损失。指定验证频率,使用ValidationFrequency培训的选择。您还可以使用验证数据时自动停止训练验证停止减少损失。打开自动验证停止使用ValidationPatience培训的选择。

如果你的神经网络层预测比在训练期间的行为会有所不同(例如,辍学层),然后验证准确性可以高于训练(mini-batch)的准确性。

验证数据是根据洗牌培训的选择。如果洗牌“every-epoch”,然后验证数据在每个神经网络验证。

如果ValidationData[],那么软件不能验证神经网络在训练。

神经网络验证的频率的迭代次数,指定为一个正整数。

ValidationFrequency价值评估的验证指标之间的迭代次数。指定验证数据,使用ValidationData培训的选择。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

耐心的验证停止的神经网络训练,一个正整数或指定

ValidationPatience指定的次数,验证集可以上的损失大于或等于前面最小损失的神经网络训练之前停止。如果ValidationPatience,然后验证的值损失不会引起培训提前停止。

返回的神经网络取决于OutputNetwork培训的选择。回归神经网络验证最低的损失,设置OutputNetwork培训选项“best-validation-loss”

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

神经网络回归训练完成后,指定为以下之一:

  • 最后一次迭代的——返回相对应的神经网络训练迭代。

  • “best-validation-loss”——返回相对应的神经网络训练迭代验证最低的损失。要使用这个选项,您必须指定ValidationData培训的选择。

解算器选项

全部折叠

最初的学习速率用于培训,指定为一个积极的标量。

默认值是0.01“个”解算器和0.001“rmsprop”“亚当”解决者。

如果学习速率太低,那么培训需要花很长时间。如果学习速率过高,那么训练可能会达到一个理想的结果或发散。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

选择放弃学习速率在训练期间,指定为以下:

  • “没有”在培训——学习速率保持不变。

  • “分段”——软件更新学习速率每一特定数量的时代通过乘以某一因素。使用LearnRateDropFactor培训选项来指定这个因素的价值。使用LearnRateDropPeriod培训选项指定数量的时代之间的乘法。

数字时代的学习速率下降,指定为一个正整数。这个选项是有效的只有当LearnRateSchedule训练方法是“分段”

软件增加全球学习速率下降因素每次指定数量的时代过去了。指定使用的下降因素LearnRateDropFactor培训的选择。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

学习速率因子下降,指定为一个标量01。这个选项是有效的只有当LearnRateSchedule训练方法是“分段”

LearnRateDropFactor是学习速率倍增因子应用于每次一定数量的时代过去了。指定时期使用的数量LearnRateDropPeriod培训的选择。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

L因素2正规化(重量衰变),指定为负的标量。有关更多信息,请参见L2正规化

您可以指定一个乘数的L2正则化参数的神经网络层可学的。有关更多信息,请参见设置参数卷积和完全连接层

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

贡献上一次迭代的参数更新一步的当前迭代随机梯度下降的势头,指定为一个标量01

的值0从上一步意味着没有贡献,而值1从上一步意味着最大的贡献。默认值适用于大多数的任务。

指定动力训练选项,solverName必须“个”

有关更多信息,请参见随机梯度下降法与动力

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

衰变率梯度移动平均的亚当•解算器指定为一个非负标量不到1。用梯度衰变率β1亚当部分。

指定GradientDecayFactor训练选项,solverName必须“亚当”

默认值适用于大多数的任务。

有关更多信息,请参见亚当

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

衰变率的平方梯度亚当和解决RMSProp移动平均,指定为一个非负标量不到1。用平方梯度衰变率β2[4]

指定SquaredGradientDecayFactor训练选项,solverName必须“亚当”“rmsprop”

典型的衰变率的值0.9,0.99,0.999,对应于平均长度的10,One hundred.,1000年参数更新,分别。

默认值是0.999亚当的能手。默认值是0.9RMSProp解算器。

有关更多信息,请参见亚当RMSProp

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

分母为亚当和解决RMSProp抵消,指定为一个积极的标量。

解算器添加抵消分母的神经网络参数更新以避免除零。默认值适用于大多数的任务。

指定ε训练选项,solverName必须“亚当”“rmsprop”

有关更多信息,请参见亚当RMSProp

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

选择复位输入层正常化,指定为以下之一:

  • 1(真正的)——复位输入层标准化统计和重新计算他们在训练时间。

  • 0(假),计算归一化数据在训练的时候是空的。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑

模式评估统计数据批处理标准化层,指定为以下之一:

  • “人口”——使用人口统计。软件使结束训练后,再次经过训练数据的统计数据,并使用生成的均值和方差。

  • “移动”——近似统计培训期间使用一个运行估计更新步骤

    μ * = λ μ μ ^ + ( 1 λ μ ) μ σ 2 * = λ σ 2 σ 2 ^ + (1 - λ σ 2 ) σ 2

    在哪里 μ * σ 2 * 分别表示更新后的均值和方差 λ μ λ σ 2 分别表示均值和方差衰减值 μ ^ σ 2 ^ 表示层的均值和方差的输入,分别 μ σ 2 表示最新的移动值均值和方差值,分别。培训后,软件使用的最新值移动均值和方差的统计数据。此选项只支持CPU和GP万博1manbetxU的培训。

梯度剪裁

全部折叠

梯度阈值,指定为或积极的标量。如果梯度超过的价值GradientThreshold,然后根据梯度剪GradientThresholdMethod培训的选择。

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

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

梯度阈值方法用来夹梯度值超过梯度阈值,指定为以下之一:

  • “l2norm”——如果L2规范的梯度大于可学的参数GradientThreshold,然后尺度梯度,L2规范=GradientThreshold

  • “global-l2norm”——如果全球L2规范,l,比GradientThreshold规模,那么所有渐变的一个因素GradientThreshold /l。全球L2规范考虑所有可学的参数。

  • “绝对值”——如果一个个体的绝对值偏导数的梯度大于可学的参数GradientThreshold,然后规模偏导数等于级GradientThreshold和留住偏导数的符号。

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

序列的选择

全部折叠

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

  • “最长”——在每个mini-batch垫序列有相同的长度最长的序列。这个选项不丢弃任何数据,尽管填充可以引入神经网络噪声。

  • “最短”——在每个mini-batch截断序列有相同的长度最短的序列。这个选项可以确保没有添加填充物,在丢弃的成本数据。

  • 正整数——对于每个mini-batch,垫的序列的长度最长mini-batch序列,然后把序列分割成较小的指定长度的序列。如果发生分裂,那么软件创建额外的mini-batches。如果指定的序列长度不均匀划分序列长度的数据,然后mini-batches包含结束这些序列长度短于指定的序列长度。使用这个选项如果完整的序列不适合在内存中。或者,试着减少序列的数量每mini-batch通过设置MiniBatchSize选择一个较低的值。

了解更多关于填充的效果,删除,并把输入序列,明白了序列填充、截断和分裂

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|字符|字符串

填充方向或截断,指定为以下之一:

  • “正确”——垫或截断序列在右边。序列开始在同一时间步和软件截断或添加填充序列的结束。

  • “左”——垫或截断序列在左边。软件截断或添加填充序列,序列的开始结束同时一步。

因为反复层过程序列数据一次一个时间步,当复发性层OutputMode属性是“最后一次”,任何填充在最后时间步可以负面影响层的输出。垫或截断左边序列数据,设置SequencePaddingDirection选项“左”

sequence-to-sequence神经网络(当OutputMode属性是“序列”对于每一个周期性层),任何填充在第一次的步骤可以负面影响的预测更早的时间步骤。垫或截断序列数据在右边,设置SequencePaddingDirection选项“正确”

了解更多关于填充的效果,删除,并把输入序列,明白了序列填充、截断和分裂

盘输入序列值,指定为一个标量。

选择是有效的只有当SequenceLength“最长”或者一个正整数。不垫序列,因为这样做可以传播在整个神经网络错误。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

硬件选项

全部折叠

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

  • “汽车”——使用GPU如果一个是可用的。否则,使用CPU。

  • “cpu”——使用CPU。

  • “图形”——使用GPU。

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

  • “平行”——使用一个本地或远程并行池集群基于默认概要文件。如果没有当前并行池,集群软件开始使用默认概要文件。如果池访问GPU,那么只有工人有着独特的GPU计算执行培训。如果池没有gpu,那么培训工人发生在所有可用的CPU。

更多信息在何时使用不同的执行环境,明白了并行扩展深度学习,在gpu上,在云端

“图形”,“multi-gpu”,“平行”选择需要并行计算工具箱™。使用GPU深度学习,你也必须有一个支持GPU设备。万博1manbetx支持设备的信息,请参阅万博1manbetxGPU计算的需求(并行计算工具箱)如果你选择其中一个选项和并行计算工具箱或合适的GPU不可用,那么软件返回一个错误。

看到并行训练时的性能的改善,尽量扩大MiniBatchSizeInitialLearnRate培训选项gpu的数量。

“multi-gpu”“平行”选项不支持包含自定义神经网络层万博1manbetx与状态参数或内置层,在培训时是有状态的。例如:

并行工作负载gpu和cpu之间的分工,指定为以下之一:

  • 标量的01部分工人在每台机器上使用神经网络训练计算。如果你训练神经网络使用mini-batch数据存储中的数据启用背景分派后,然后剩下的工人获取和预处理数据的背景。

  • 正整数,工人数量在每台机器上用于神经网络训练计算。如果你训练神经网络使用mini-batch数据存储中的数据启用背景分派后,然后剩下的工人获取和预处理数据的背景。

  • 数字矢量-神经网络训练负荷为每个工人在并行池。为一个向量W、工人获得分数W(我)/ (W)和的工作(每mini-batch一些例子)。如果你训练一个神经网络使用mini-batch数据存储中的数据启用背景分派后,然后你可以分配一个工作负载(0)使用,工人在后台获取数据。指定的向量平行池中人均必须包含一个值。

如果平行池访问GPU,那么工人没有独特的GPU从来都不是用来训练计算。池在GPU上默认是使用所有工人与独特的培训GPU计算,和其余工人调度为背景。如果池中没有获得gpu和cpu用于训练,然后在默认情况下,使用一个每台机器的工人为后台数据调度。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

国旗使背景调度(异步预取排队)阅读训练数据从数据存储,指定为0(虚假的)或1(真正的)。背景调度需要并行计算工具箱。

DispatchInBackground只支持数据存储的万博1manbetx分区。有关更多信息,请参见使用数据存储并行调度培训和背景

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

检查点

全部折叠

神经网络路径保存检查点,指定为一个特征向量或字符串标量。

  • 如果你不指定一个路径(也就是说,使用默认值”“),则不保存任何检查点神经网络的软件。

  • 如果你指定一个路径,那么trainNetwork节省了检查点神经网络这条道路,每个神经网络分配一个唯一的名称。然后你可以加载任何检查点神经网络和恢复训练神经网络。

    如果文件夹不存在,那么您必须首先创建之前指定的路径保存检查点神经网络。如果您所指定的路径不存在,那么trainingOptions返回一个错误。

CheckpointFrequencyCheckpointFrequencyUnit选项指定检查点保存神经网络的频率。

关于节约的更多信息神经网络检查点,明白了保存检查点网络和恢复训练

数据类型:字符|字符串

拯救检查点神经网络的频率,指定为一个正整数。

如果CheckpointFrequencyUnit“时代”,那么软件节省了检查点神经网络的每一个CheckpointFrequency时代的发展。

如果CheckpointFrequencyUnit“迭代”,那么软件节省了检查点神经网络的每一个CheckpointFrequency迭代。

这个选项只有当产生影响CheckpointPath非空的。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

检查点频率单位,指定为“时代”“迭代”

如果CheckpointFrequencyUnit“时代”,那么软件节省了检查点神经网络的每一个CheckpointFrequency时代的发展。

如果CheckpointFrequencyUnit“迭代”,那么软件节省了检查点神经网络的每一个CheckpointFrequency迭代。

这个选项只有当产生影响CheckpointPath非空的。

输出函数调用在训练期间,指定为一个函数处理或功能单元阵列处理。trainNetwork调用指定的函数一旦开始前的训练,每一次迭代后,一旦训练完成后。trainNetwork通过一个结构,其中包含的信息在以下领域:

描述
时代 当前时代数量
迭代 当前迭代次数
TimeSinceStart 时间在几秒钟内开始以来的训练
TrainingLoss 当前mini-batch损失
ValidationLoss 验证数据损失
BaseLearnRate 目前基地学习速率
TrainingAccuracy 对当前mini-batch精度(分类神经网络)
TrainingRMSE 对当前mini-batch RMSE(回归神经网络)
ValidationAccuracy 验证数据的准确性(分类神经网络)
ValidationRMSE RMSE验证数据(回归神经网络)
状态 当前训练状态,可能的值“开始”,“迭代”,或“完成”

如果一个领域没有计算或相关的特定的输出函数,那么这个字段包含一个空数组。

您可以使用输出函数来显示或情节进展信息,或停止训练。早停止训练,让你的输出函数返回1(真正的)。如果函数返回任何输出1(真正的),然后训练结束trainNetwork返回最新的神经网络。为一个例子,演示如何使用输出功能,看看自定义输出在深入学习网络训练

数据类型:function_handle|细胞

输出参数

全部折叠

训练选项,作为一个返回TrainingOptionsSGDM,TrainingOptionsRMSProp,或TrainingOptionsADAM对象。训练一个神经网络,利用训练选项作为输入参数trainNetwork函数。

如果solverName“个”,“rmsprop”,或“亚当”,然后返回作为培训选项TrainingOptionsSGDM,TrainingOptionsRMSProp,或TrainingOptionsADAM对象,分别。

您可以编辑培训选项的属性TrainingOptionsSGDM,TrainingOptionsADAM,TrainingOptionsRMSProp直接对象。例如,使用后更改mini-batch大小trainingOptions功能,您可以编辑MiniBatchSize房地产直接:

选择= trainingOptions(个);选项。MiniBatchSize = 64;

提示

算法

全部折叠

最初的重量和偏见

卷积和完全连接层,初始化权重和偏见的WeightsInitializerBiasInitializer层的属性,分别。示例显示如何改变权重的初始化和偏见,明白了在卷积层指定初始重量和偏见指定初始重量和偏见完全连接层

随机梯度下降法

标准梯度下降算法更新网络参数(重量和偏见)最小化损失函数采取小步骤在每个迭代的负梯度方向的损失,

θ + 1 = θ α E ( θ ) ,

在哪里 是迭代数, α > 0 是学习速率, θ 是参数向量, E ( θ ) 损失函数。在标准的梯度下降算法,损失函数的梯度, E ( θ ) ,评估使用整个训练集,和标准的梯度下降算法使用整个数据集。

相比之下,在每一次迭代随机梯度下降算法计算梯度和更新参数使用训练数据的一个子集。使用一个不同的子集,称为mini-batch,在每个迭代。的全部通过训练算法在整个训练集使用mini-batches就是其中之一时代。随机梯度下降法是随机的,因为参数更新计算使用mini-batch噪声估计的参数更新使用完整的数据集的结果。您可以指定mini-batch大小和时代使用的最大数量MiniBatchSizeMaxEpochs训练选项,分别。

随机梯度下降法与动力

随机梯度下降算法可以摆动沿着最速下降的道路走向最优。添加动量项参数更新是一种减少振荡[2]。随机梯度下降的势头(个)更新

θ + 1 = θ α E ( θ ) + γ ( θ θ 1 ) ,

在哪里 γ 确定之前的贡献当前迭代梯度一步。您可以指定这个值使用动力培训的选择。训练一个神经网络算法使用随机梯度下降法和势头,指定“个”作为第一个输入参数trainingOptions。指定初始值的学习速率α,使用InitialLearnRate培训的选择。您还可以指定不同的学习不同层和参数。有关更多信息,请参见设置参数卷积和完全连接层

RMSProp

随机梯度下降法与动力使用一个单一的学习速率的所有参数。其他优化算法寻求提高网络训练采用学习速率参数,能自动适应不同的损失函数优化。RMSProp(均方根传播)就是这样的一个算法。它使element-wise方块的移动平均线的参数的梯度,

v = β 2 v 1 + ( 1 β 2 ) ( E ( θ ) ] 2

β2移动平均线的衰减率。常见的衰变率的值是0.9,0.99和0.999。相应的平均长度的平方梯度相等1 /(1-β2)100年,10日,分别和1000参数更新。您可以指定β2通过使用SquaredGradientDecayFactor培训选项。RMSProp算法使用这个移动平均规范化单独每个参数的更新,

θ + 1 = θ α E ( θ ) v + ϵ

element-wise执行部门。有效利用RMSProp减少参数的学习速度梯度大,增加了学习的参数与小梯度。ɛ是一个小的常数添加到避免除零。您可以指定ɛ通过使用ε训练选项,但是默认值通常工作得很好。使用RMSProp来训练神经网络,指定“rmsprop”作为第一个输入trainingOptions

亚当

亚当(来自自适应估计时刻)[4]使用一个参数更新RMSProp相似,但是增加了动量项。它一直以聪明元素的移动平均线参数梯度及其平方值,

= β 1 1 + ( 1 β 1 ) E ( θ )

v = β 2 v 1 + ( 1 β 2 ) ( E ( θ ) ] 2

您可以指定β1β2衰减率使用GradientDecayFactorSquaredGradientDecayFactor训练选项,分别。亚当使用移动平均线来更新网络参数

θ + 1 = θ α l v l + ϵ

如果在许多迭代梯度是相似的,那么使用的移动平均梯度使参数更新动力在一定方向。如果梯度包含大部分噪声,然后移动平均梯度变得越来越小,所以参数更新也变得更小。您可以指定ɛ通过使用ε培训的选择。默认值通常很有效,但是对于某些问题值一样大1效果更好。使用亚当来训练神经网络,指定“亚当”作为第一个输入trainingOptions。完整的亚当更新还包括一种机制来纠正偏差的出现在训练的开始。有关更多信息,请参见[4]

指定学习速率α对所有使用优化算法InitialLearnRate培训的选择。学习速率的影响是不同的不同的优化算法,所以最优学习速率也不同。您还可以指定学习率在不同的层次和参数。有关更多信息,请参见设置参数卷积和完全连接层

梯度剪裁

如果梯度呈指数级增加,那么训练是不稳定的,背离了几个迭代。这种“梯度爆炸”所示去培训的损失。梯度剪切稳定的训练有助于防止梯度爆炸的高等教育率和异常值的存在[3]。梯度剪裁使网络训练速度,通常不会影响学习任务的准确性。

有两种类型的梯度剪裁。

  • Norm-based梯度剪裁重新调节梯度阈值的基础上,并且不改变梯度的方向。的“l2norm”“global-l2norm”的值GradientThresholdMethodnorm-based梯度剪裁的方法。

  • 价值梯度剪裁剪辑任何偏导数大于阈值,从而导致梯度任意改变方向。价值梯度剪裁可以有不可预知的行为,但足够小的变化不会引起网络有分歧。的“绝对值”的价值GradientThresholdMethod是一个价值梯度剪裁方法。

l2正则化

添加一个正则化项的重量损失函数 E ( θ ) 是一种减少过度拟合[1],[2]。正则化项也被称为体重衰变。的损失函数的正则化项

E R ( θ ) = E ( θ ) + λ Ω ( w ) ,

在哪里 w 权向量, λ 是正则化因子(系数),正则化函数 Ω ( w )

Ω ( w ) = 1 2 w T w

注意,偏见不正规化[2]。您可以指定正则化因子 λ 通过使用L2Regularization培训的选择。您还可以指定不同的正则化因子不同层和参数。有关更多信息,请参见设置参数卷积和完全连接层

的损失函数,软件使用网络培训包括正则化项。然而,损失值显示在命令窗口和培训发展情节在训练仅损失数据,不包括正则化项。

引用

[1]主教,c . M。模式识别和机器学习。施普林格,纽约,纽约,2006年。

[2]墨菲,k . P。机器学习:概率的角度来看。马萨诸塞州剑桥的麻省理工学院出版社,2012年。

[3]Pascanu, R。,T。Mikolov, and Y. Bengio. "On the difficulty of training recurrent neural networks".30学报》国际会议上机器学习。28卷(3),2013年,页1310 - 1318。

[4]Kingma, Diederik,吉米英航。“亚当:一个随机优化方法。”arXiv预印本arXiv: 1412.6980(2014)。

版本历史

介绍了R2016a

全部展开