MATLAB深度学习工具箱文档——trainingOptions函数的参数设置

    科技2022-07-12  566

    trainingOptions函数的参数设置是深度学习训练的一个重点,训练深度学习神经网络的选项直接影响网络的性能,本文是笔者在2019年初进行本科毕业(划水)设计时,因为年轻不懂规矩,将当时的官网网页直接硬翻译了过来,除了作为一次毕设汇报的内容,也没其他用处,不过好歹是一番功夫,整理出来,做个纪念吧。

    目录是2020版本的,内容是2019版本的,如果出现只有标题的情况,说明是2020新加的,我还没有翻译。以前看别人的文章,总是抱怨写的不够具体,现在自己写,却是总想偷懒。哈哈,己所不欲勿施于人,此言不虚。希望以后有空能补充完整。

    这里写目录标题

    ExamplesInput ArgumentssolverName — Solver for training network Plots and Display'Plots' — Plots to display during network training'Verbose' — Indicator to display training progress information'VerboseFrequency' — Frequency of verbose printing Mini-Batch Options'MaxEpochs' — Maximum number of epochs'MiniBatchSize' — Size of mini-batch'Shuffle' — Option for data shuffling Validation'ValidationData' — Data to use for validation during training'ValidationFrequency' — Frequency of network validation'ValidationPatience' — Patience of validation stopping Solver Options'InitialLearnRate' — Initial learning rate'LearnRateSchedule' — Option for dropping learning rate during training'LearnRateDropPeriod' — Number of epochs for dropping the learning rate'LearnRateDropFactor' — Factor for dropping the learning rate'L2Regularization' — Factor for L2 regularization'Momentum' — Contribution of previous step'GradientDecayFactor' — Decay rate of gradient moving average'SquaredGradientDecayFactor' — Decay rate of squared gradient moving average'Epsilon' — Denominator offset'ResetInputNormalization' — Option to reset input layer normalization Gradient Clipping'GradientThreshold' — Gradient threshold'GradientThresholdMethod' — Gradient threshold method Sequence Options'SequenceLength' — Option to pad, truncate, or split input sequences'SequencePaddingDirection' — Direction of padding or truncation'SequencePaddingValue' — Value to pad input sequences Hardware Options'ExecutionEnvironment' — Hardware resource for training network'WorkerLoad' — Parallel worker load division'DispatchInBackground' — Use background dispatch Checkpoints'CheckpointPath' — Path for saving checkpoint networks'OutputFcn' — Output functions Output ArgumentsOutput Arguments

    Examples

    Input Arguments

    solverName — Solver for training network

    options = trainingOptions(solverName)返回一组为solverName指定求解器的训练选项。 名称-值对参数指定可选的以逗号分隔的名称、值参数对。Name是参数名,Value是对应的值。名称必须出现在单引号(’ ')内。您可以以任何顺序指定几个名称和值对参数,如Name1、Value1、…、NameN、ValueN。

    例如:‘initiallearningrg’,0.03,‘L2Regularization’,0.0005,‘LearnRateSchedule’,‘piecewise’指定初始学习率为0.03,L2正则化因子为0.0005,并指示软件通过乘以某个因子来降低每个给定次数的学习率。

    Plots and Display

    ‘Plots’ — Plots to display during network training

    ‘none’ (default) | ‘training-progress’ 前者是训练期间不显示进程(默认)。'training-progress’显示训练进展,包括小批量损失和准确性、验证损失和准确性,以及关于训练进度的附加信息。图的右上角有一个停止按钮。点击按钮停止训练,返回网络当前状态。

    ‘Verbose’ — Indicator to display training progress information

    1 (default) | 0 指示符,用于在命令窗口中显示训练进度信息,指定为逗号分隔的对,由“Verbose”和1 (true)或0 (false)组成。显示的信息包括轮次数、迭代数、时间、小批量的损失、小批量的准确性和基本学习率。训练一个回归网络时,显示的是均方根误差(RMSE),而不是精度。如果在训练期间验证网络,那么显示的信息还包括验证损失和验证精度(或RMSE)。使用“ValidationData”名称-值对指定验证数据。

    ‘VerboseFrequency’ — Frequency of verbose printing

    50 (default) | positive integer 详细信息显示的频率,即显示到命令窗口的迭代次数,指定为由“VerboseFrequency”和一个正整数组成的逗号分隔对。只有当“Verbose”值等于true时,此选项才会生效。如果在训练期间验证了网络,那么每当验证发生时,trainNetwork也会打印到命令窗口。

    Mini-Batch Options

    ‘MaxEpochs’ — Maximum number of epochs

    30 (default) | positive integer 用于训练的最大轮次数,指定为由’MaxEpochs’和正整数组成的逗号分隔对。迭代是梯度下降算法中使用小批处理来最小化损失函数的一个步骤。一个轮次是训练算法在整个训练集上的一次全部遍历。

    ‘MiniBatchSize’ — Size of mini-batch

    128 (default) | positive integer 小批量大小,用于每个训练迭代的小批处理的大小,指定为由“MiniBatchSize”和一个正整数组成的逗号分隔的对。小批处理是用于评估损失函数梯度和更新权重的训练集的子集。

    ‘Shuffle’ — Option for data shuffling

    ‘once’ (default) | ‘never’ | ‘every-epoch’ 数据洗牌选项,指定为由“洗牌”和下列选项之一组成的逗号分隔对: 'once’在训练之前,对训练和验证数据进行一次洗牌。 'never’不打乱数据。 'every-epoch’在每个训练轮次之前洗牌训练数据,在每个网络验证之前洗牌验证数据。如果小批量大小不能均匀划分训练样本的数量,则训练网络丢弃不适合每个轮次的最终完整小批量的训练数据。为了避免在每个轮次中丢弃相同的数据,将“Shuffle”值设置为“every-epoch”。

    Validation

    ‘ValidationData’ — Data to use for validation during training

    ImageDatastore | table | cell array 用于验证网络性能的数据,即验证集,一般情况下是和训练集相同的数据类型。

    ‘ValidationFrequency’ — Frequency of network validation

    50 (default) | positive integer 以迭代次数表示的网络验证频率,指定为由’ValidationFrequency’和正整数组成的逗号分隔对。“ValidationFrequency”值是验证度量值之间的迭代次数。要指定验证数据,请使用“ValidationData”名称-值对参数。

    ‘ValidationPatience’ — Patience of validation stopping

    5 (default) | positive integer | Inf 网络训练验证停止的耐性,指定为由“ValidationPatience”和一个正整数或Inf组成的逗号分隔对。“ValidationPatience”值是验证集上的损失可能大于或等于网络训练停止之前最小损失的次数。要关闭自动验证停止,请将Inf指定为“ValidationPatience”值。要指定验证数据,请使用“ValidationData”名称-值对参数。

    Solver Options

    ‘InitialLearnRate’ — Initial learning rate

    使用trainingOptions的“InitialLearnRate”名称-值对参数指定全局学习率。默认率是0.01,但是如果网络训练不收敛,你可能希望选择一个更小的值。默认情况下,trainNetwork在整个训练过程中都会使用这个值,除非选择在每个特定的时间段内通过乘以一个因子来更改这个值。而不是使用一个小的固定学习速率在整个训练, 在训练开始时选择较大的学习率,并在优化过程中逐步降低学习率,可以帮助缩短训练时间,同时随着训练的进行,可以使更小的步骤达到最优值,从而在训练结束时进行更精细的搜索。

    ‘LearnRateSchedule’ — Option for dropping learning rate during training

    ‘none’ (default) | ‘piecewise’ 在训练期间降低学习率的选项,默认学习率不变。'piecewise’表示在学习过程中降低学习率。

    ‘LearnRateDropPeriod’ — Number of epochs for dropping the learning rate

    10 (default) | positive integer 降低学习率的轮次数量,指定为由“LearnRateDropPeriod”和一个正整数组成的逗号分隔的对。只有当LearnRateSchedule的值为’piecewise’时,此选项才有效。每次通过指定数量的epoch时,将全局学习率与学习率降低因子相乘。使用LearnRateDropFactor名称-值对参数指定降低因子。

    ‘LearnRateDropFactor’ — Factor for dropping the learning rate

    0.1 (default) | scalar from 0 to 1 用于降低学习率的因子,指定为由“LearnRateDropFactor”和一个从0到1的标量组成的逗号分隔的对。只有当LearnRateSchedule的值为’piecewise’时,此选项才有效。学习率因子是一个乘性因子,每次经过一定数量的轮次后应用于学习率。使用LearnRateDropPeriod名称-值对参数指定轮次的数量。

    ‘L2Regularization’ — Factor for L2 regularization

    0.0001 (default) | nonnegative scalar L2正则化因子(权重衰减),指定为由’L2Regularization’ 和非负标量组成的逗号分隔对。可以为具有可学习参数的网络层的L2正则化器指定乘数。

    ‘Momentum’ — Contribution of previous step

    0.9 (default) | a scalar from 0 to 1 训练的前一个迭代到当前迭代的梯度步长的贡献,指定为由动量和0到1的标量组成的逗号分隔的对。0表示前一步没有任何贡献,而1表示前一步的最大贡献。

    ‘GradientDecayFactor’ — Decay rate of gradient moving average

    ‘SquaredGradientDecayFactor’ — Decay rate of squared gradient moving average

    ‘Epsilon’ — Denominator offset

    ‘ResetInputNormalization’ — Option to reset input layer normalization

    Gradient Clipping

    ‘GradientThreshold’ — Gradient threshold

    ‘GradientThresholdMethod’ — Gradient threshold method

    Sequence Options

    ‘SequenceLength’ — Option to pad, truncate, or split input sequences

    ‘longest’ (default) | ‘shortest’ | positive integer

    填充、截断或分割输入序列的选项,指定为下列之一: “最长”-每个小批中的Pad序列具有与最长序列相同的长度。 “最短”—截断每个小批中的序列,使其长度与最短序列相同。 正整数-每个小批量的Pad序列具有与最长序列相同的长度,然后分割成指定长度的较小序列。如果发生分裂,则该函数创建额外的小批。

    ‘SequencePaddingDirection’ — Direction of padding or truncation

    ‘SequencePaddingValue’ — Value to pad input sequences

    0 (default) | scalar 用于填充输入序列的值,指定为标量。只有当SequenceLength为’longest’或正整数时,该选项才有效。不要用NaN填充序列,这样做会在网络中传播错误。

    Hardware Options

    ‘ExecutionEnvironment’ — Hardware resource for training network

    “执行环境”—用于训练网络的硬件资源,默认有GPU就用,没有的话自动使用CPU。

    ‘WorkerLoad’ — Parallel worker load division

    ‘DispatchInBackground’ — Use background dispatch

    Checkpoints

    ‘CheckpointPath’ — Path for saving checkpoint networks

    ‘OutputFcn’ — Output functions

    function handle | cell array of function handles 在训练期间调用的输出函数,指定为由’OutputFcn’和函数句柄或函数句柄单元数组组成的逗号分隔的对。trainNetwork在训练开始前调用一次指定的函数,每次迭代后调用一次,训练结束后调用一次。trainNetwork传递了一个包含以下信息的结构: 如果某个信息不计算或与对输出函数的某个调用无关,则该字段包含一个空数组。可以使用输出函数来显示或绘制进度信息,或停止训练。为了尽早停止训练,让你的输出函数返回true。如果任何输出函数返回true,则训练结束,trainNetwork返回最新的网络。

    Output Arguments

    Output Arguments

    Processed: 0.010, SQL: 8