使用pytorch内置的自动求导写的BP算法

https://blog.csdn.net/zhaomengszu/article/details/77834845

此代码参考上面的文章写的,包括W1,W2,H,O,B都一样。

求导是我心头的一个大问题,当然高数上求求还是没问题的。神经网络中链式法则太多以后就会晕。。

我的Z8300寨版,从win10装了LUBUNTU,但是tf对CPU要求太高,只能装1。5版本的tf,我就放弃了,现在转来学pytorch,发现这个框架真的很好理解。可能我个人比较喜欢这样的动态图吧~

import torch
from torch.autograd import Variable
import numpy as np


_input=torch.Tensor([[0.05],[0.10]])
_ty=torch.Tensor([[0.01],[0.99]]) #standrd output
_b1=torch.Tensor([0.35])
_b2=torch.Tensor([0.60])
##########################3
w1=Variable(torch.Tensor([[0.15,0.2],[0.25,0.30]]),requires_grad=True)
w2=Variable(torch.Tensor([[0.40,0.45],[0.5,0.55]]),requires_grad=True)
h1=w1.mm(_input)+_b1
h1=h1.sigmoid()

_out=w2.mm(h1)+_b2
_out=_out.sigmoid()

loss=((_out-_ty)*(_out-_ty)/2).sum() #here can use sum() or mean()
loss.backward()  #start backwarding
print(_out,loss)
print(w2.grad)
print(w1.grad)

w2.data.sub_(0.5*w2.grad)
w1.data.sub_(0.5*w1.grad)
h1=w1.mm(_input)+_b1
h1=h1.sigmoid()

_out=w2.mm(h1)+_b2
_out=_out.sigmoid()

loss=((_out-_ty)*(_out-_ty)/2).sum() #here can use sum() or mean()
loss.backward()  #start backwarding
print(_out,loss)

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值