我在用
net = newfit(in,out,lag(j),{'tansig','tansig'});
生成一个新的神经网络.数量的默认值validation checks
是6
.
我正在训练很多网络,这需要花费很多时间.我想如果我的结果不那么精确,如果它们可以快得多,那就无所谓了.
我怎样才能更快地训练?
我相信其中一种方法可能是减少验证检查次数的价值.我该怎么做(在代码中,不使用GUI)
还有其他方法来提高速度.
正如我所说,速度的提高可能会略微降低准确性.
只是为了扩展@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_dec和mu_max用于控制权重更新过程(反向传播).
max_fail通常用于避免过度拟合,而不是用于加速.
我的建议是,将时间和时期设置为应用程序约束允许的最大可能值(否则结果将很差).反过来,您可以控制目标和min_grad达到所需的速度/准确性权衡级别.请记住,max_fails不会让你获得任何时间,因为它主要用于确保良好的泛化能力.