poster
2019-12-10, 16:49
我在用
net = newfit(in,out,lag(j),{'tansig','tansig'}); 生成一个新的神经网络。 validation checks次数的默认值为6 。
我正在训练很多网络,这需要很多时间。我想我的结果是否可以准确地提高一点,这并不重要。
我怎样才能更快地训练?
我相信一种方法可能是减少验证检查次数的价值。我该怎么做(在代码中,不使用GUI)
还有其他提高速度的方法。
正如我所说,速度的提高可能会稍微降低精度。
回答:
根据文档 (http://www.mathworks.com/help/nnet/ref/trainlm.html) ,仅是扩展@mtrw (https://stackoverflow.com/questions/1735125/how-to-change-the-default-parameters-for-newfit-in-matlab/1735401#1735401)答案,当发生以下任何一种情况时,培训就会停止:
到达时期的最大数量: net.trainParam.epochs
超过了最大时间 : net.trainParam.time
性能被最小化的目标 : net.trainParam.goal
性能梯度低于min_grad : net.trainParam.min_grad
mu超过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不会使您有所收获,因为它主要用于确保良好的泛化能力。
更多&回答... (https://stackoverflow.com/questions/1735125)
net = newfit(in,out,lag(j),{'tansig','tansig'}); 生成一个新的神经网络。 validation checks次数的默认值为6 。
我正在训练很多网络,这需要很多时间。我想我的结果是否可以准确地提高一点,这并不重要。
我怎样才能更快地训练?
我相信一种方法可能是减少验证检查次数的价值。我该怎么做(在代码中,不使用GUI)
还有其他提高速度的方法。
正如我所说,速度的提高可能会稍微降低精度。
回答:
根据文档 (http://www.mathworks.com/help/nnet/ref/trainlm.html) ,仅是扩展@mtrw (https://stackoverflow.com/questions/1735125/how-to-change-the-default-parameters-for-newfit-in-matlab/1735401#1735401)答案,当发生以下任何一种情况时,培训就会停止:
到达时期的最大数量: net.trainParam.epochs
超过了最大时间 : net.trainParam.time
性能被最小化的目标 : net.trainParam.goal
性能梯度低于min_grad : net.trainParam.min_grad
mu超过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不会使您有所收获,因为它主要用于确保良好的泛化能力。
更多&回答... (https://stackoverflow.com/questions/1735125)