PyTorch深度学习:反向传播

背景:

        对于复杂的模型如上图, 求出每一个函数,计算每一个权重工作量十分庞大,几乎是不可能完成的任务,这时候就要使用反向传播波算法。

基本过程:

①前汇运算:

从左向右运算,得到损失值Loss

 

②反向传播:

从得到的Loss反向推出x与w的梯度

注意:

为了提高模型的复杂度,不进行化简,所以增加一个非线性函数

增加前:权值被化简

增加后:不再可被化简

 

代码实现过程:

import torch

x_data = [1.0,2.0,3.0]
y_data = [2.0,4.0,6.0]

w = torch.tensor([1.0])
w.requires_grad = True

def forward (x):
    return x*w

def loss(x,y):
    y_pred = forward(x)
    return (y_pred-y)**2

print ("predict before training",4,forward(4).item())

for epoch in range(100):
    for x,y in zip(x_data,y_data):
        l = loss(x,y)
        l.backward()
        print("\tgrad",x,y,w.grad.item())
        w.data = w.data-0.01*w.grad.data

        w.grad.data.zero_()

    print("progress",epoch,l.item)

print ("predict before training",4,forward(4).item())

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值