![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
优化算法
风吹草地现牛羊的马
这个作者很懒,什么都没留下…
展开
-
pytorch训练过程中出现nan的排查思路
最常见的就是出现了除0或者log0这种,看看代码中在这种操作的时候有没有加一个很小的数,但是这个数数量级要和运算的数的数量级要差很多。一般是1e-8。在optim.step()之前裁剪梯度。optim.zero_grad()loss.backward()nn.utils.clip_grad_norm(model.parameters, max_norm, norm_type=2)optim.step()max_norm一般是1,3,5。前面两条还不能解决nan的话,就按照下面的流程来判.原创 2020-12-11 14:20:58 · 22803 阅读 · 24 评论 -
优化算法
优化算法顾名思义就是求解参数的方法,比如在机器学习中,定义好了损失函数如何求解模型的参数,这时候就是用优化算法来解决。常见的优化算法有:坐标轴上升、坐标轴下降、牛顿法、拟牛顿法、最小二乘法、拉格朗日乘数法,梯度下降等。先挖个坑,有时间再更新上述一些算法。不过目前深度学习中最常用的就是梯度下降算法了,梯度下降算法中又包括随机梯度下降(SGD), AdaGrad, RMSProp, Adam等。这里面最常用就是Adam了。现在深度学习框架比如Pytorch, TF等都实现了梯度下降中的很多算法,拿过来用就行了原创 2020-11-25 10:35:50 · 771 阅读 · 0 评论 -
牛顿法与Hessian矩阵
牛顿法可以用于求解方程的根和无约束最优化问题。其背后的数学原理分别对应的是一阶泰勒展开和二阶泰勒展开。回顾泰勒公式展开:f(x)=f(x0)+f′(x0)(x−x0)+12f′′(x0)(x−x0)2+O((x−x0)3)f(x)= f(x_0)+f'(x_0)(x-x_0)+{1 \over 2}f''(x_0)(x-x0)^2+O((x-x_0)^3)f(x)=f(x0)+f′(x0)(x−x0)+21f′′(x0)(x−x0)2+O((x−x0)3)牛顿法求解方程的根假设我们要原创 2020-10-09 15:32:20 · 2579 阅读 · 1 评论