如何在MATLAB中更改newfit()的默认参数?

Laz*_*zer 3 performance matlab machine-learning neural-network

我在用

net = newfit(in,out,lag(j),{'tansig','tansig'});
Run Code Online (Sandbox Code Playgroud)

生成一个新的神经网络.数量的默认值validation checks6.

我正在训练很多网络,这需要花费很多时间.我想如果我的结果不那么精确,如果它们可以快得多,那就无所谓了.

我怎样才能更快地训练?

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

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

Amr*_*mro 5

只是为了扩展@mtrw的答案,根据文档,当出现任何这些情况时,训练停止:

  • 达到最大历元数:net.trainParam.epochs
  • 超过最长时间:net.trainParam.time
  • 性能最小化到目标:net.trainParam.goal
  • 性能梯度低于min_grad:net.trainParam.min_grad
  • 亩超过mu_max:net.trainParam.mu_max
  • 自上次减少(使用验证时)以来,验证性能增加了超过max_fail次数:net.trainParam.max_fail

时期时间限制允许在训练持续时间上设置上限.

当性能(误差)低于它时,目标约束会停止训练,并且通常允许您调整时间/准确度权衡级别:更准确的结果以便更快地执行.

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

mu,mu_decmu_max用于控制权重更新过程(反向传播).

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

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