Matlab:trainingOptions()详解 训练选项

本文详细介绍了MATLAB中用于神经网络训练的`trainingOptions`函数,包括设置优化算法如SGDM、RMSProp、Adam,调整学习率策略、动量、L2正则化等关键参数,并探讨了数据打乱、验证频率、早停策略等训练过程中的重要环节。通过实例展示了如何创建和使用`trainingOptions`对象,以优化模型训练效果。
摘要由CSDN通过智能技术生成

trainingOptions用于设置神经网络的训练策略以及超参数

用法:options = trainingOptions(solverName,Name,Value)
           solverName为优化函数,Name-Value为键值对,返回一个TrainingOptions对象

看个例子更直观,

>> options = trainingOptions('sgdm', ...
    'MiniBatchSize',512, ...
    'MaxEpochs',2, ...
    'InitialLearnRate',1e-3, ...
    'Shuffle','every-epoch', ...
    'ValidationData',imdsValidation, ...
    'ValidationFrequency',3, ...
    'Verbose',false, ...
    'Plots','training-progress');
>> options

options = 

  TrainingOptionsSGDM - 属性:

                    Momentum: 0.9000
            InitialLearnRate: 1.0000e-03
           LearnRateSchedule: 'none'
         LearnRateDropFactor: 0.1000
         LearnRateDropPeriod: 10
            L2Regularization: 1.0000e-04
     GradientThresholdMethod: 'l2norm'
           GradientThreshold: Inf
                   MaxEpochs: 2
               MiniBatchSize: 512
                     Verbose: 0
            VerboseFrequency: 50
              ValidationData: [1×1 matlab.io.datastore.ImageDatastore]
         ValidationFrequency: 3
          ValidationPatience: Inf
                     Shuffle: 'every-epoch'
              CheckpointPath: ''
        ExecutionEnvironment: 'auto'
                  WorkerLoad: []
                   OutputFcn: []
                       Plots: 'training-progress'
              SequenceLength: 'longest'
        SequencePaddingValue: 0
    SequencePaddingDirection: 'right'
        DispatchInBackground: 0
     ResetInputNormalization: 1

可以看到,能调的参数很多,下面进行详解

  • solverName:优化函数,可选’sgdm’,‘rmsprop’,‘adam’
  • Momentum:动量,[0,1]之间
  • InitialLearnRate:初始学习率
  • LearnRateSchedule:学习率策略,‘none’或者’piecewise’,'none’表示学习率不变,'piecewise’为分段学习率
  • LearnRateDropFactor:学习率下降因子,[0,1]之间,降低之后学习率为:当前学习率*下降因子
  • LearnRateDropPeriod:学习率下降周期,即几个epoch下降一次学习率
  • L2Regularization:L2正则化因子
  • GradientThresholdMethod:用于裁剪超过阈值的梯度,可选’l2norm’,‘global-l2norm’,‘absolute-value’
  • GradientThreshold:梯度阈值,如果梯度大于阈值,则按GradientThresholdMethod设定的方法处理
  • MaxEpochs:最大训练回合数,正整数,默认为20
  • MiniBatchSize:就是batchsize,每次迭代使用的数据量,正整数
  • Verbose:是否在命令行窗口显示实时训练进程,0或1,若为1,则在命令行显示当前在干啥了,默认为true在这里插入图片描述
  • VerboseFrequency:Verbose在命令行打印的频率,默认为100
  • ValidationData:验证集数据,是一个ImageDatastore对象
  • ValidationFrequency:验证频率,几个batchsize后验证一次,不是epoch
  • ValidationPatience:早停条件,Validation上loss大于或等于最小loss多少epoch后停止训练,比如,当前loss为最小值且为0.01,再经过几个回合都没有低于0.01,就停止训练
  • Shuffle:数据打乱策略,可选’once’,‘never’,‘every-epoch’
                  ‘once’:在训练前打乱
                  ‘never’:不打乱
                  ‘every-epoch’:每个epoch打乱一次
    默认为’once’,建议选择‘every-epoch’,因为MATLAB训练网络的时候,如果数据不够一个batchsize会直接丢弃,‘every-epoch’可以避免丢弃同一批数据
  • CheckpointPath:网络保存路径,默认为’’,即默认不保存,如果设置的有路径,则每个epoch后会非覆盖的保存一次
  • ExecutionEnvironment:硬件环境,用GPU还是CPU,可选’auto’,‘cpu’,‘gpu’,‘multi-gpu’,'auto’为有gpu则用,没有就用cpu
  • WorkerLoad:我也没看很懂,大概就是计算资源的问题,一般不会用到
  • OutputFcn:默认就行
  • Plots:是否画出实时训练进程,可选’none’或者’training-progress’,默认为’none’
  • SequenceLength:处理序列数据用的
  • SequencePaddingValue:同上
  • SequencePaddingDirection:同上
  • DispatchInBackground:使用后台调度(异步预取队列)从数据存储中读取训练数据,指定false或true,后台调度需要并行计算工具箱,默认为0

其实,在实际用的时候,需要调的也就那么几个,大多就默认就行了,上面代码里面就是常用的几个。

最后附上官方文档链接,更详细

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值