Pytorch(二):梯度下降

一、梯度下降的作用:

https://pytorch.apachecn.org/docs/1.0/blitz_neural_networks_tutorial.html
一个神经网络的典型训练过程如下:
定义包含一些可学习参数(或者叫权重)的神经网络
在输入数据集上迭代
通过网络处理输入
计算损失(输出和正确答案的距离)
梯度反向传播给网络的参数
更新网络的权重,一般使用一个简单的规则:weight = weight - learning_rate * gradient
梯度下降是用于选择选择网络权重的一种方法

二、什么是梯度下降:
  • 梯度下降算法是一种利用一次导数信息求取目标函数极值的方法,也是目前应用最为广泛的局部优化算法之一。其具有实现简单、容易迁移、收敛速度较快的特征。在求解过程中,从预设的种子点开始,根据梯度信息逐步迭代更新,使得种子点逐渐向目标函数的极小值点移动,最终到达目标函数的极小值点。
    注意,沿梯度正向移动,将获取目标函数局部极大值(梯度上升算法);沿梯度反向移动,将获取目标函数局部极小值(梯度下降算法)。
  • 权重(w,b)构成函数f(x)=wx+b,损失函数是f输出和真实值的差。
  • 梯度下降选择使损失函数梯度减小的权重,最小化损失函数。
  • https://zhuanlan.zhihu.com/p/59678480
    https://zhuanlan.zhihu.com/p/43452377
三、实现梯度下降算法的基本步骤

1、设定初始值
2、求取梯度
3、在梯度方向上进行参数的更新

四、梯度下降代码

pytorch超级容易入门的代码:https://www.cnblogs.com/yjphhw/p/9681773.html
numpy三种方法的解释和实现

线性回归:

#最小二乘法 拟合y=3x+1
n=100
x=torch.rand((n))
y=x*3+1+torch.rand(n)/5   #y=3x+1 加上随机噪声
k=Variable(torch.Tensor([1]),requires_grad=True)
b=Variable(torch.Tensor([0]),requires_grad=True)
loss=torch.nn.MSELoss()
for epoch in range(100):
    l=loss(k*x+b,y)    #MSE 最小二乘法
    l.backward()
    k.data-=k.grad.data*0.3
    b.data-=b.grad.data*0.3
    print("k={:.2},b={:.2},l={:.2}".format(k.data[0],b.data[0],l.data))
    k.grad.data.zero_()
    b.grad.data.zero_()

https://github.com/viki6666/Pytorch_learn/blob/master/gradient_descent.ipynb

笔记
  • backward():反向传播
    在这里插入图片描述
    在这个向前传播的过程中,function1和function2记录了数据input的所有操作历史,当output2运行其backward函数时,会使得function2和function1自动反向计算input的导数值并存储在grad属性中。
  • x.grad.data.zero_():梯度清零
    使用d.backward()求Variable的梯度的时候,Variable.grad是累加的即: Variable.grad=Variable.grad+new_grad
  • 类的方法种self参数的作用:self总是指调用时的类的实例。

其他较好的未细看的资料:
梯度下降:
https://cloud.tencent.com/developer/news/363410
神经网络搭建:
https://blog.csdn.net/Ever_glow/article/details/89086960
线性回归:
https://blog.csdn.net/zw__chen/article/details/82802566

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值