MATLAB深度学习layer、options参数浅析与文章推荐

很多小伙伴接触matlab深度学习时不清楚layer与training options参数。

matlab深度学习中的layer与training options参数分别决定了你模型的网络架构训练方式

layer参数包括你模型从输入走向输出的各层,options包括你训练网络的详细参数设定。

下例来源:MATLAB LSTM多输入单输出 模式分类 示例解析(含代码)_严肃小白兔的博客-CSDN博客

layer网络架构

miniBatchSize = 27;

numFeatures = 12;

numHiddenUnits = 100;

numClasses = 9;

layers = [ ...

    sequenceInputLayer(numFeatures)

    bilstmLayer(numHiddenUnits,'OutputMode','last')

    fullyConnectedLayer(numClasses)

    softmaxLayer

    classificationLayer]

层级设置=[

序列输入层(特征数量)

双向lstm层(隐藏单元个数,'输出模式','多对一')

全连接层(目标个数)%目标个数即分类的类别数

softmax层(映射层)

输出分类层]

此类层级设置仅限lstm长短期记忆神经网络

层级设置可以手段调整,不是固定模式的代码

如果你想达到别的目的,你可以根据需要对layer进行修改,每一层都有其存在的意义。目前能力有限,希望能在后面出一期完整的matlab不同设定层的分析。

options训练选项

maxEpochs = 100;

miniBatchSize = 27;

options = trainingOptions('adam', ...

    'ExecutionEnvironment','cpu', ...

    'GradientThreshold',1, ...

    'MaxEpochs',maxEpochs, ...

    'MiniBatchSize',miniBatchSize, ...

    'SequenceLength','longest', ...

    'Shuffle','never', ...

    'Verbose',0, ...

    'Plots','training-progress');

选项 = 训练选项设置('累加器', ...

    '训练执行单元','cpu', ...

    '梯度阈值',1, ...

    '最大训练轮次',maxEpochs, ...

    '最小步距',miniBatchSize, ...

    '序列长度','整个序列', ...

    '乱序','否', ...

    '在命令窗口中显示训练进度信息',否, ...

    '画图','训练过程');

选择优化器:累加器 'adam'(派生自自适应矩估计)求解器通常适合作为首先尝试的优化器。除此之外还有 'rmsprop'(均方根传播)和 'sgdm'(带动量的随机梯度下降)优化器,选取的标准要依据效果。

相关资料:adam:https://www.csdn.net/tags/Ntjagg2sNTIxMy1ibG9n.html

                  梯度相关概念:梯度下降来龙去脉附matlab代码_金石开1510的博客-CSDN博客

最大训练轮次(MaxEpochs):训练多少轮,epoch是世代的意思,每次使用全部子集完成一次运算就是完成了一次epoch,训练轮次的设置要在防止数据过拟合的前提下尽量提高模型效果。

最小步距 (MiniBatchSize):batch批次的意思,在梯度下降中一般来说要遍历所有样本,但有的时候样本个数特别大,不适合逐一遍历作梯度下降。此时我们就可以将样本划分若干子集,对子集进行遍历,针对每一个子集进行梯度下降,更新参数。MiniBatchSize是每个子集内样本个数,最小是1,最大是全部样本个数。

序列长度(SequenceLength):“最长”-每个小批中的Pad序列具有与最长序列相同的长度。除此之外还有:‘shortest’—截断每个小批中的序列,使其长度与最短序列相同。‘positive integer’—每个小批量的序列具有与最长序列相同的长度,然后分割成指定长度的较小序列。如果发生分裂,则该函数创建额外的小批。

乱序(Shuffle):'never’不打乱数据。除此之外还有:'once’在训练之前,对训练和验证数据进行一次洗牌、'every-epoch’在每个训练轮次之前洗牌训练数据。

推荐文章:MATLAB深度学习工具箱文档——trainingOptions函数的参数设置_素观江湖真的博客-CSDN博客_matlab trainingoptions函数

  • 13
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matlab深度学习工具箱中,我们可以使用不同的方法来指定初始参数。一种常用的方法是使用预训练的模型来初始化参数。通过预训练的模型,我们可以将已经学习到的特征迁移到新的任务中,从而加快模型训练的速度,提高性能。 另一种常用的方法是手动指定初始参数。在深度学习中,参数的初始值非常重要,它可能会对模型的训练过程和性能产生很大的影响。Matlab提供了一些函数和工具,可以帮助我们指定合适的初始参数。 首先,可以使用randn函数生成服从标准正态分布的随机数作为初始参数。这种方法的优点是简单易用,但可能需要更多的训练时间来调整参数,以使其达到最佳状态。 其次,可以使用Xavier初始化方法,该方法是根据输入和输出的维度来计算初始参数。Xavier初始化方法使得初始参数的方差相对较小,从而能够更好地适应不同的输入和输出分布。 此外,还可以使用He初始化方法,该方法在深层网络中表现更好。He初始化方法根据输入维度来计算初始参数,并考虑了激活函数的性质。相较于Xavier初始化方法,He初始化方法通常能够更好地处理深层网络中的梯度消失和梯度爆炸问题。 当然,以上只是一些常用的方法,实际上还有其他更复杂的初始化方法可以尝试。在实际应用中,我们可以根据具体情况选择合适的初始化方法,以帮助我们获取更好的模型性能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值