日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Pytorch(三) --反向传播

發布時間:2023/12/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pytorch(三) --反向传播 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

整體上來說,和上一節的梯度下降法差不多,不過這次是用Pytorch實現的,調用了其中的一些方法。
需要注意的事項:
①Tensor中包含data和grad,其中data和grad也是Tensor。在更新w.data時,也需要使用w.grad.data。
②與Tensor做運算后得到的值,也是Tensor類型的。
③l.backward()方法會把計算圖中所有需要梯度的地方求出來,然后存到對應的參數中,最終將計算圖釋放。
本次針對 y = w1*x^2+w2 *x+b,利用反向傳播算法,求出近似的解。
代碼如下:

# y = 3*x^2+2*x+3 x_data = [1.0,2.0,3.0] y_data = [8.0,19.0,36.0] lr=0.01 w1,w2,b = torch.Tensor([1.0,1.0,2.0]) w1.requires_grad=True w2.requires_grad=True b.requires_grad=Truedef forward(x):return w1*x**2+w2*x+b def loss(x,y):return (forward(x)-y)**2 print('Predict (before training)') for epoch in range(100000):l=0for x,y in zip(x_data,y_data):l = loss(x,y)l.backward()print('\tgrad:',x,y,w1.grad.item(),w2.grad.item(),b.grad.item())w1.data = w1.data-lr*w1.grad.dataw2.data = w2.data-lr*w2.grad.datab.data = b.data-lr*b.grad.dataw1.grad.data.zero_()w2.grad.data.zero_()b.grad.data.zero_()print('Epoch:',epoch,l.item()) print('Finally:','w1=',w1.data.item(),'w2=',w2.data.item(),'b=',b.data.item())

最終結果如下所示:

Finally: w1= 2.999950408935547 w2= 2.0002214908599854 b= 2.999795436859131

努力加油a啊

總結

以上是生活随笔為你收集整理的Pytorch(三) --反向传播的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。