3

我在用

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

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

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

我怎样才能训练得更快?

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

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

4

3 回答 3

5

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

  • 达到最大epoch数:net.trainParam.epochs
  • 超过最大时间量:net.trainParam.time
  • 性能被最小化到目标net.trainParam.goal
  • 性能梯度低于min_gradnet.trainParam.min_grad
  • mu 超过mu_maxnet.trainParam.mu_max
  • 自上次下降以来,验证性能增加了超过max_fail次(使用验证时):net.trainParam.max_fail

时期时间限制允许对训练持续时间设置上限。

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

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

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

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

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

于 2009-11-14T21:10:58.130 回答
1

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

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

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

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

您可能应该设置net.trainParam.showNaN跳过任何显示。

于 2009-11-14T19:52:03.827 回答
0

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

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

于 2009-11-14T21:16:35.543 回答