Matlab 训练深度学习模型函数 trainingOptions
functionopts = trainingOptions(solverName, varargin)solverName:'sgdm' -带动量的随机梯度下降'adam' -自适应力矩估计'rmsprop' -均方根传播'Momentum'仅当求解器为“ sgdm”时,此参数才适用。 动量确定了从上次迭代到当前训练迭代的梯度步长的贡献。 它必须是介于0和1之间的值,其中0将不提供上一步的贡献,
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);
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)