MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   如何在MATLAB中更改newfit()的默认参数? (https://www.labfans.com/bbs/showthread.php?t=22903)

poster 2019-12-10 16:49

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

net = newfit(in,out,lag(j),{'tansig','tansig'}); 生成一个新的神经网络。 validation checks次数的默认值为6 。

[B]我正在训练很多网络,这需要很多时间。[/B]我想我的结果是否可以准确地提高一点,这并不重要。

[B]我怎样才能更快地训练?[/B]
[LIST][*]我相信一种方法可能是减少验证检查次数的价值。我该怎么做(在代码中,不使用GUI)[*]还有其他提高速度的方法。[/LIST]正如我所说,速度的提高可能会稍微降低精度。


回答:
根据[URL="http://www.mathworks.com/help/nnet/ref/trainlm.html"]文档[/URL] ,仅是扩展[URL="https://stackoverflow.com/questions/1735125/how-to-change-the-default-parameters-for-newfit-in-matlab/1735401#1735401"]@mtrw[/URL]答案,当发生以下任何一种情况时,培训就会停止:
[LIST][*]到达[B]时期[/B]的最大数量: net.trainParam.epochs[*]超过了最大[B]时间[/B] : net.trainParam.time[*]性能被最小化的[B]目标[/B] : net.trainParam.goal[*]性能梯度低于[B]min_grad[/B] : net.trainParam.min_grad[*] mu超过[B]mu_max[/B] : net.trainParam.mu_max[*]自上次降低验证[B]效率[/B]以来(使用验证时),验证性能提高了超过[B]max_fail[/B]次: net.trainParam.max_fail[/LIST][I]时代[/I]和[I]时间的[/I]限制可以使训练的持续时间达到上限。

当性能(错误)下降到[I]目标[/I]约束以下时, [I]目标[/I]约束将停止训练,并且通常可以让您调整时间/精度的权衡程度:较不精确的结果可以更快地执行。

这类似于[I]min_grad[/I] (梯度告诉您“下降”的强度),因为如果梯度的大小小于mingrad,则训练会停止。通过以下事实可以理解,如果误差函数变化不大,那么我们将达到一个平稳状态,我们可能应该停止训练,因为我们的改进不会太大。

[I]mu[/I] , [I]mu_dec[/I]和[I]mu_max[/I]用于控制权重更新过程(反向传播)。

[I]max_fail[/I]通常用于避免过度拟合,而不是为了加速。

我的建议是,将[I]时间[/I]和[I]纪元[/I]设置为您的应用程序限制所允许的最大可能[I]时间[/I] (否则结果将很差)。然后,您可以控制[I]目标[/I]和[I]min_grad[/I]以达到所需的速度/精度权衡。请记住, [I]max_fails[/I]不会使您[I]有所[/I]收获,因为它主要用于确保良好的泛化能力。



[url=https://stackoverflow.com/questions/1735125]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 10:27

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.