【问题标题】:How to change the default parameters for newfit() in MATLAB?如何在 MATLAB 中更改 newfit() 的默认参数?
【发布时间】:2010-12-16 15:32:25
【问题描述】:

我正在使用

net = newfit(in,out,lag(j),{'tansig','tansig'});

生成一个新的神经网络。 validation checks的数量默认为6

我正在训练很多网络,这需要花费很多时间。我想如果我的结果可以做得更快,那么我的结果是否准确一点也没关系。

我怎样才能训练得更快?

  • 我相信其中一种方法可能是减少验证检查次数的价值。我该怎么做(在代码中,而不是使用 GUI)
  • 还有其他提高速度的方法吗?

正如我所说,速度的提高可能会稍微降低准确性。

【问题讨论】:

    标签: matlab performance machine-learning neural-network


    【解决方案1】:

    只是为了扩展@mtrw的答案,根据documentation,当出现以下任何一种情况时,训练就会停止:

    • 已达到epochs的最大数量:net.trainParam.epochs
    • 时间已超过最大值:net.trainParam.time
    • 性能最小化到目标net.trainParam.goal
    • 性能梯度低于min_gradnet.trainParam.min_grad
    • mu 超过 mu_maxnet.trainParam.mu_max
    • 自那时以来,验证性能提高了 ma​​x_fail 倍以上 最后一次减少(使用验证时):net.trainParam.max_fail

    Epochstime 约束允许设置训练持续时间的上限。

    目标约束在性能(错误)低于它时停止训练,并且通常允许您调整时间/准确性权衡的水平:不太准确的结果以更快地执行。

    这类似于 min_grad(梯度告诉你“下降”的强度),如果梯度的幅度小于 mingrad,则停止训练。可以这样理解,如果误差函数没有太大变化,那么我们就达到了一个平台期,我们可能应该停止训练,因为我们不会有太大改进。

    mumu_decmu_max用于控制权重更新过程(反向传播)。

    max_fail 通常用于避免过度拟合,而不是加速。

    我的建议,将 timeepochs 设置为您的应用程序约束允许的最大可能(否则结果会很差)。反过来,您可以控制 goalmin_grad 以达到所需的速度/准确性权衡水平。请记住,max_fails 不会让您获得任何时间,因为它主要用于确保良好的泛化能力。

    【讨论】:

      【解决方案2】:

      (免责声明:我没有神经网络工具箱,所以我只是从 Mathworks 文档中推断)

      从您的输入参数来看,您使用的是TRAINLM。根据文档,您可以设置 net.trainParam.max_fail 参数来更改验证检查。

      您可以设置初始mu 值,以及递增和递减因子。但这需要对搜索的预期答案和性能有所了解。

      对于更直接的方法,您还可以通过将 net.trainParam.epochs 参数设置为小于默认值 100 来控制最大迭代次数。您还可以设置 net.trainParam.time 参数来限制秒数。

      您应该将net.trainParam.show 设置为NaN 以跳过任何显示。

      【讨论】:

        【解决方案3】:

        神经网络在 MATLAB 中被视为对象。要在训练之前(或之后)访问任何参数,您需要使用 . 运算符访问网络的属性。

        除了 mtrw 和 Amro 的答案之外,让 MATLAB 的神经网络工具箱文档成为您最好的新朋友。它通常会更详细地解释事情。

        【讨论】:

          猜你喜欢
          • 2023-04-08
          • 2021-12-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-02-22
          • 2023-03-18
          • 1970-01-01
          相关资源
          最近更新 更多