最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pytorch使用Variable實現(xiàn)線性回歸

 更新時間:2021年04月09日 14:23:09   作者:東城青年  
這篇文章主要為大家詳細介紹了pytorch使用Variable實現(xiàn)線性回歸,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了pytorch使用Variable實現(xiàn)線性回歸的具體代碼,供大家參考,具體內(nèi)容如下

一、手動計算梯度實現(xiàn)線性回歸

#導入相關(guān)包
import torch as t
import matplotlib.pyplot as plt
 
#構(gòu)造數(shù)據(jù)
def get_fake_data(batch_size = 8):
 #設(shè)置隨機種子數(shù),這樣每次生成的隨機數(shù)都是一樣的
 t.manual_seed(10)
 #產(chǎn)生隨機數(shù)據(jù):y = 2*x+3,加上了一些噪聲
 x = t.rand(batch_size,1) * 20
 #randn生成期望為0方差為1的正態(tài)分布隨機數(shù)
 y = x * 2 + (1 + t.randn(batch_size,1)) * 3 
 return x,y
 
#查看生成數(shù)據(jù)的分布
x,y = get_fake_data()
plt.scatter(x.squeeze().numpy(),y.squeeze().numpy())
 
#線性回歸
 
#隨機初始化參數(shù)
w = t.rand(1,1)
b = t.zeros(1,1)
#學習率
lr = 0.001 
 
for i in range(10000):
 x,y = get_fake_data()
 
 #forward:計算loss
 y_pred = x.mm(w) + b.expand_as(y)
 
 #均方誤差作為損失函數(shù)
 loss = 0.5 * (y_pred - y)**2 
 loss = loss.sum()
 
 #backward:手動計算梯度
 dloss = 1
 dy_pred = dloss * (y_pred - y)
 dw = x.t().mm(dy_pred)
 db = dy_pred.sum()
 
 #更新參數(shù)
 w.sub_(lr * dw)
 b.sub_(lr * db)
 
 if i%1000 == 0:
 #畫圖
 plt.scatter(x.squeeze().numpy(),y.squeeze().numpy())
 
 x1 = t.arange(0,20).float().view(-1,1)
 y1 = x1.mm(w) + b.expand_as(x1)
 plt.plot(x1.numpy(),y1.numpy()) #predicted
 plt.show()
 #plt.pause(0.5)
 print(w.squeeze(),b.squeeze())

顯示的最后一張圖如下所示:

二、自動梯度 計算梯度實現(xiàn)線性回歸

#導入相關(guān)包
import torch as t
from torch.autograd import Variable as V
import matplotlib.pyplot as plt
 
#構(gòu)造數(shù)據(jù)
def get_fake_data(batch_size=8):
 t.manual_seed(10) #設(shè)置隨機數(shù)種子
 x = t.rand(batch_size,1) * 20
 y = 2 * x +(1 + t.randn(batch_size,1)) * 3
 return x,y
 
#查看產(chǎn)生的x,y的分布是什么樣的
x,y = get_fake_data()
plt.scatter(x.squeeze().numpy(),y.squeeze().numpy())
 
#線性回歸
 
#初始化隨機參數(shù)
w = V(t.rand(1,1),requires_grad=True)
b = V(t.rand(1,1),requires_grad=True)
lr = 0.001
for i in range(8000):
 x,y = get_fake_data()
 x,y = V(x),V(y)
 y_pred = x * w + b
 loss = 0.5 * (y_pred-y)**2
 loss = loss.sum()
 
 #自動計算梯度
 loss.backward()
 #更新參數(shù)
 w.data.sub_(lr * w.grad.data)
 b.data.sub_(lr * b.grad.data)
 
 #梯度清零,不清零梯度會累加的
 w.grad.data.zero_()
 b.grad.data.zero_()
 
 if i%1000==0:
 #predicted
 x = t.arange(0,20).float().view(-1,1)
 y = x.mm(w.data) + b.data.expand_as(x)
 plt.plot(x.numpy(),y.numpy())
 
 #true data
 x2,y2 = get_fake_data()
 plt.scatter(x2.numpy(),y2.numpy())
 plt.show()
print(w.data[0],b.data[0])

顯示的最后一張圖如下所示:

用autograd實現(xiàn)的線性回歸最大的不同點就在于利用autograd不需要手動計算梯度,可以自動微分。這一點不單是在深度在學習中,在許多機器學習的問題中都很有用。另外,需要注意的是每次反向傳播之前要記得先把梯度清零,因為autograd求得的梯度是自動累加的。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python中拆分字符串的操作方法

    Python中拆分字符串的操作方法

    這篇文章主要介紹了Python中拆分字符串的操作方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • 利用Python繪制酷炫的3D地圖

    利用Python繪制酷炫的3D地圖

    pyecharts是一款將python與echarts結(jié)合的強大的數(shù)據(jù)可視化工具。本文將為大家介紹如何利用pyecharts繪制酷炫的3D地圖,感興趣的小伙伴可以試一試
    2022-03-03
  • Python StringIO及BytesIO包使用方法解析

    Python StringIO及BytesIO包使用方法解析

    這篇文章主要介紹了Python StringIO及BytesIO包使用方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • python使用Pillow將照片轉(zhuǎn)換為1寸報名照片的教程分享

    python使用Pillow將照片轉(zhuǎn)換為1寸報名照片的教程分享

    在現(xiàn)代科技時代,我們經(jīng)常需要調(diào)整和處理照片以適應(yīng)特定的需求和用途,本文將介紹如何使用wxPython和Pillow庫,通過一個簡單的圖形界面程序,將選擇的照片轉(zhuǎn)換為指定尺寸的JPG格式,并保存在桌面上,需要的朋友可以參考下
    2023-09-09
  • pandas 條件搜索返回列表的方法

    pandas 條件搜索返回列表的方法

    今天小編就為大家分享一篇pandas 條件搜索返回列表的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Pycharm插件(Grep Console)自定義規(guī)則輸出顏色日志的方法

    Pycharm插件(Grep Console)自定義規(guī)則輸出顏色日志的方法

    這篇文章主要介紹了Pycharm插件(Grep Console)自定義規(guī)則輸出顏色日志的方法,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • Python math庫 ln(x)運算的實現(xiàn)及原理

    Python math庫 ln(x)運算的實現(xiàn)及原理

    這篇文章主要介紹了Python math庫 ln(x)運算的實現(xiàn)及原理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • 淺談django框架集成swagger以及自定義參數(shù)問題

    淺談django框架集成swagger以及自定義參數(shù)問題

    這篇文章主要介紹了淺談django框架集成swagger以及自定義參數(shù)問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Python中字典的setdefault()方法教程

    Python中字典的setdefault()方法教程

    在學習python字典操作方法時,感覺setdefault()方法,比字典的其它基本操作方法更難理解的同學比較多,所以想著總結(jié)以下,下面這篇文章主要給大家介紹了Python中字典的setdefault()方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02
  • 基于Python實現(xiàn)ComicReaper漫畫自動爬取腳本過程解析

    基于Python實現(xiàn)ComicReaper漫畫自動爬取腳本過程解析

    這篇文章主要介紹了基于Python實現(xiàn)ComicReaper漫畫自動爬取腳本過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11

最新評論

左贡县| 天全县| 襄城县| 辉南县| 金乡县| 肥城市| 北京市| 渭源县| 手游| 沙坪坝区| 永仁县| 神木县| 高陵县| 泽普县| 峨眉山市| 芷江| 晋宁县| 阿鲁科尔沁旗| 丘北县| 集安市| 理塘县| 临沂市| 磴口县| 霍山县| 富民县| 博客| 信宜市| 绥棱县| 庄河市| 平湖市| 杨浦区| 楚雄市| 刚察县| 应城市| 西藏| 三穗县| 信阳市| 临洮县| 合江县| 墨竹工卡县| 桐乡市|