function opts = trainingOptions(solverName, varargin)

solverName:
'sgdm'    -   带动量的随机梯度下降
'adam'    -   自适应力矩估计
'rmsprop' -  均方根传播

'Momentum'

仅当求解器为“ sgdm”时,此参数才适用。 动量确定了从上次迭代到当前训练迭代的梯度步长的贡献。 它必须是介于0和1之间的值,其中0将不提供上一步的贡献,而1将提供上一步的最大贡献。 默认值为0.9。

 

'GradientDecayFactor'

 仅当求解器为“ adam”时,此参数才适用。 它为求解器“ adam”中的梯度移动平均值指定指数衰减率。 它必须是> = 0且<1的值。在“ adam”的原始论文中,此参数由符号“ beta1”表示。 默认值为0.9。

 

'SquaredGradientDecayFactor'

仅当求解器为“ adam”或“ rmsprop”时,此参数才适用。它为求解器“ adam”和“ rmsprop”中的平方梯度移动平均值指定指数衰减率。它必须是> = 0且<1的值。在“ adam”的原始论文中,此参数由符号“ beta2”表示。 “ adam”的默认值为0.999,“ rmsprop”的默认值为0.9。

 

'Epsilon'

仅当求解器为“ adam”或“ rmsprop”时,此参数才适用。它指定在分母中使用的偏移量,用于求解器“ adam”和“ rmsprop”中的更新。它必须是> 0的值。默认值为1e-8。

 

'InitialLearnRate'

用于训练的初始学习率。如果学习率太低,则训练将花费很长时间,但是如果学习率太高,则训练可能会陷入次优的结果。求解器'sgdm'的默认值为0.01,求解器'adam'和'rmsprop'的默认值为0.001。

 

'LearnRateSchedule'

该选项允许用户指定一种在训练期间降低整体学习率的方法。

可能的选择 包括:

 -“无”-学习率不变,保持不变。

 -“piecewise”-每当经过一定数量的时期时,学习率就会乘以一个系数。乘法因子由参“ LearnRateDropFactor”控制,乘法之间的纪元数由“ LearnRateDropPeriod”控制。

  默认为“无”。

 

'LearnRateDropFactor'

仅当“ LearnRateSchedule”设置为“ piecewise”时,此参数才适用。这是一个乘数因子,每次经过一定数量的纪元时,它就会应用于学习率。

默认值为0.1。

 

'LearnRateDropPeriod'

仅当“ LearnRateSchedule”设置为“ piecewise”时,此参数才适用。每次经过此时期数时,学习率下降因子将应用于全局学习率。默认值为10。

 

'L2Regularization'

L2正则化因子。应当注意,层中的每个参数集都可以为此L2正则化器指定一个乘数。

默认值为0.0001。

 

'GradientThresholdMethod'

-用于梯度阈值化的方法可能的选项是:

  -'global-l2norm'-如果考虑所有可学习的参数,梯度的全局L2范数大于GradientThreshold,则将所有梯度缩放GradientThreshold / L,其中L是全局L2范数。

     -'l2norm'-如果可学习参数的梯度的L2范数大于GradientThreshold,则对梯度进行缩放以使其范数等于GradientThreshold。

   -'绝对值'-如果可学习参数的梯度中各个偏导数的绝对值大于GradientThreshold,则将其缩放为具有GradientThreshold的绝对值并保留其符号。

  默认值为“ l2norm”。

 

'GradientThreshold'

渐变的正阈值。 默认值为Inf。

 

'MaxEpochs'

-用于训练的最大轮数。 默认值为30。

 

'MiniBatchSize'

-用于每次训练迭代的最小批次的大小。 默认值为128。

 

'Verbose'

-如果将其设置为true,则有关训练进度的信息将被打印到命令窗口中。默认值为true。

 

'VerboseFrequency'

-仅在“Verbose”设置为true时才有效。它指定打印到命令窗口之间的迭代次数。默认值为50。

 

'ValidationData'

训练期间用于验证的数据。可以是:

-具有分类标签或数字响应的数据存储

-表格,第一列包含图像路径或图像

-单元格数组{X,Y},其中X是包含输入数据的数字数组,Y是响应数组

 

'ValidationFrequency'

-验证指标评估之间的迭代次数。仅当您还指定“ ValidationData”时,这才有效。默认值为50。

 

'ValidationPatience'

-在网络训练停止之前,允许验证损失大于或等于先前的最小损失的次数,指定为正整数或Inf。默认值为Inf。要打开自动停止网络训练的功能,请指定一个正整数作为“ ValidationPatience”值。

 

'Shuffle'

这个控制训练数据是否被重排。选项包括:

-“从不”-不应用改组。

-“一次”-训练之前,数据将被随机洗一次。

-“每个时期”-在每个训练时期之前,将对数据进行重新排序。

 默认值为“一次”。

 

'CheckpointPath'

保存检查点网络的路径。指定后,软件会在每个时期后保存检查点网络。如果未指定,则不会保存任何检查点。

 

'ExecutionEnvironment'

网络的执行环境。这确定了将使用哪些硬件资源来训练网络。要使用GPU或计算集群,您必须具有Parallel Computing Toolbox(TM)。 GPU必须启用CUDA,并具有3.0或更高的计算能力。

-'自动'-如果有GPU,请使用GPU,否则请使用CPU。

-'gpu'-使用GPU。

-'cpu'-使用CPU。

-'multi-gpu'-使用本地并行池在一台计算机上使用多个GPU。如果没有打开池,则每个受支持的GPU设备将打开一个池,只有一个工作进程。

-“并行”-使用计算群集。如果没有打开池,则使用默认群集配置文件打开一个池。如果池可以访问GPU,则将使用它们,并且多余的工作线程将处于空闲状态。如果池中没有GPU,则将在所有群集CPU上进行培训。

默认为“自动”。

 

'WorkerLoad'

适用于“多GPU”和“并行”执行环境。

 

'OutputFcn'

-指定在每次迭代结束时在训练期间要调用的一个或多个函数。 通常,您可以使用输出功能显示或绘制进度信息,或者确定是否应尽早终止培训。 该函数将被传递一个包含当前迭代信息的结构。 它还可能返回true,这将触发提前终止。

 

'Plots'

-训练期间要显示的图,指定为“训练进行中”或“无”(默认)

 

'SequenceLength'

将小批量中的序列填充或截断为指定长度。 选项有:

-'longest'-将小批量中的所有序列填充到最长序列的长度。

-'shortest'-将小批量中的所有序列截短为最短序列的长度。

-Positive integer-填充序列的长度与最长序列的长度相同,然后分成指定长度的较小序列。 如果发生拆分,则该函数会创建额外的迷你批。

默认值为“最长”。

 

'SequencePaddingValue'

-用于在必要时填充序列的标量值。默认值为0。

 

'DispatchInBackground'

-用于控制在读取训练数据时是否使用异步预取排队的标量逻辑。默认为false。需要并行计算工具箱。

 

例:

%创建一组训练选项,以进行具有动量的随机梯度下降训练。每5轮学习率将降低0.2倍。培训将持续20轮,每次迭代将使用一个包含300个观察值的小批量。

options = trainingOptions('sgdm', ...

               'Plots', 'training-progress', ...

               'LearnRateSchedule', 'piecewise', ...

               'LearnRateDropFactor', 0.2, ...

               'LearnRateDropPeriod', 5, ...

               'MaxEpochs', 20, ...

               'MiniBatchSize', 300);

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐