matlab深度学习参数

trainingOptions 函数是用于配置神经网络训练参数的重要工具,它根据指定的求解器(solver)生成一套训练选项。下面是对各个参数功能的详细解释:

  • solverName: 指定使用的优化算法,例如带动量的随机梯度下降(sgdm)、自适应矩估计(adam)或均方传播(rmsprop)。

  • Momentum: 仅当选择'sgdm'求解器时有效,决定了前一迭代梯度步骤对当前迭代的影响程度,取值范围为0到1。值越接近1,前一步的贡献越大;接近0,则几乎不考虑前一步。

  • GradientDecayFactor(β1): 仅在使用'adam'求解器时应用,控制梯度移动平均的指数衰减速度。

  • SquaredGradientDecayFactor(β2): 对于'adam'和'rmsprop'求解器,此参数设置了平方梯度移动平均的指数衰减率。

  • Epsilon: 在'adam'和'rmsprop'中使用,作为更新公式分母中的一个小常数,防止除以零的问题,确保数值稳定性。

  • InitialLearnRate: 初始学习率,影响训练速度和结果质量。太低会导致训练慢,太高可能导致次优解。

  • LearnRateSchedule: 控制训练过程中全局学习率的调整策略,可以是'none'(固定学习率)或'piecewise'(按一定周期降低学习率)。

  • LearnRateDropFactorLearnRateDropPeriod: 当采用'piecewise'学习率调度时,前者决定学习率降低的乘数,后者决定降低学习率的周期(以epoch计)。

  • L2Regularization: L2正则化的强度,帮助防止过拟合,每层参数可单独设置该值的乘数。

  • GradientThresholdMethod: 设置梯度截断策略,防止梯度爆炸,有全局L2范数、L2范数及绝对值三种方法。

  • GradientThreshold: 设定梯度的阈值,超过此阈值时,根据所选方法调整梯度。

  • MaxEpochs: 训练的最大轮数,避免无限循环。

  • MiniBatchSize: 每次迭代时使用的样本数量,影响训练效率和内存使用。

  • Verbose: 决定是否在命令行窗口输出训练过程信息。

  • VerboseFrequency: 当开启Verbose模式时,指定多少个迭代后输出一次信息,默认为50。

  • ValidationData: 用于训练期间验证模型性能的数据集。这可以是包含分类标签或数值响应的数据存储、首列包含图像路径或图像的表,或是输入数据X与响应Y组成的元胞数组{X, Y}。验证数据帮助评估模型在未见过的数据上的表现,促进泛化能力的提升。

  • ValidationFrequency: 指定每隔多少个迭代周期评估一次验证指标。只有在指定了验证数据时才生效,默认为50次迭代评估一次。

  • ValidationPatience: 定义验证损失在多少次连续迭代中不降反升或保持不变后,训练将停止。这是一个正整数或Inf(无穷大),意味着永不因验证性能不改善而停止训练,默认值为Inf。

  • Shuffle: 控制训练数据是否以及如何进行洗牌。可选值包括:

    • 'never': 不进行任何洗牌。
    • 'once': 在训练开始前只洗牌一次。
    • 'every-epoch': 每个训练周期前都进行洗牌。默认设置为'once',有助于减少数据顺序对训练的影响,提高模型的泛化能力。
  • CheckpointPath: 指定保存检查点网络文件的路径。如果设置了该路径,软件将在每个训练周期后保存网络状态,以便后续恢复训练或评估。如果不指定,则不会保存检查点。

  • ExecutionEnvironment: 确定网络训练的执行环境,即使用的硬件资源。选项包括自动选择(默认,根据可用性选择GPU或CPU)、仅GPU、仅CPU、多GPU(同一机器上)以及并行计算集群。这允许用户根据硬件配置优化训练速度。

  • WorkerLoad: 在使用多GPU或并行计算环境时,定义了如何在多个工作节点之间分配计算负载。可以通过整数或比例来指定每个工作节点的负载,或者为每个工作节点直接指定负载向量。合理分配负载可以有效利用计算资源,加速训练过程。

  • OutputFcn: 允许用户定义一个或多个函数,在训练的每次迭代结束时调用。这些函数可以用来显示进度、绘制训练曲线,甚至根据某些条件提前终止训练。它们接收包含当前迭代信息的结构体,并可能返回一个布尔值来指示是否应提前终止训练。

  • Plots: 指定在训练过程中要显示的图表类型,可选值为 'training-progress' 显示训练进度图,或 'none' 不显示任何图表(默认)。

  • SequenceLength: 定义处理序列数据时每个小批量(mini-batch)的序列长度策略。可选策略包括:

    • 'longest':所有序列填充到批次中最长序列的长度。
    • 'shortest':所有序列截断到批次中最短序列的长度。
    • 正整数:序列被填充至该整数的最近倍数,大于批次中最长序列长度,必要时会分割序列产生额外的小批量。
  • SequencePaddingValue: 填充序列时使用的标量值,默认为0。

  • SequencePaddingDirection: 序列填充或截断的方向,默认为 'right'(右侧填充或截断)。

  • DispatchInBackground: 逻辑值,决定是否在读取训练数据时使用异步预取队列,默认为 false。需要Parallel Computing Toolbox支持。

  • ResetInputNormalization: 控制是否重置输入层的归一化统计信息,默认为 true,表示在训练时清除并重新计算统计信息。

  • BatchNormalizationStatistics: 批次归一化层统计评估模式,可选 'population' 使用总体统计(训练后需最终化阶段),或 'moving' 使用移动估计(训练过程中累计)。当执行环境为 'auto', 'cpu', 或 'gpu' 时,才能使用 'moving'

  • OutputNetwork: 指定训练结束后返回的网络类型,可选 'last-iteration' 返回最后迭代的网络,或 'best-validation-loss' 返回验证损失最小的网络(需同时指定验证数据)。

此外,示例展示了如何使用 trainingOptions 函数创建和调整训练选项。这包括定义学习率衰减策略、小批量大小、最大迭代轮数、梯度阈值方法等,通过函数参数或点标记法进行灵活配置,以适应不同的训练需求和优化目标。这样的灵活性对于优化模型性能、监控训练过程及管理计算资源至关重要。

  • 9
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Stanford_sun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值