使用pytorch實(shí)現(xiàn)線性回歸
本文實(shí)例為大家分享了pytorch實(shí)現(xiàn)線性回歸的具體代碼,供大家參考,具體內(nèi)容如下
線性回歸都是包括以下幾個(gè)步驟:定義模型、選擇損失函數(shù)、選擇優(yōu)化函數(shù)、 訓(xùn)練數(shù)據(jù)、測(cè)試
import torch import matplotlib.pyplot as plt # 構(gòu)建數(shù)據(jù)集 x_data= torch.Tensor([[1.0],[2.0],[3.0],[4.0],[5.0],[6.0]]) y_data= torch.Tensor([[2.0],[4.0],[6.0],[8.0],[10.0],[12.0]]) #定義模型 class LinearModel(torch.nn.Module): def __init__(self): super(LinearModel, self).__init__() self.linear= torch.nn.Linear(1,1) #表示輸入輸出都只有一層,相當(dāng)于前向傳播中的函數(shù)模型,因?yàn)槲覀円话愣疾恢篮瘮?shù)是什么形式的 def forward(self, x): y_pred= self.linear(x) return y_pred model= LinearModel() # 使用均方誤差作為損失函數(shù) criterion= torch.nn.MSELoss(size_average= False) #使用梯度下降作為優(yōu)化SGD # 從下面幾種優(yōu)化器的生成結(jié)果圖像可以看出,SGD和ASGD效果最好,因?yàn)樗麄兊膱D像收斂速度最快 optimizer= torch.optim.SGD(model.parameters(),lr=0.01) # ASGD # optimizer= torch.optim.ASGD(model.parameters(),lr=0.01) # optimizer= torch.optim.Adagrad(model.parameters(), lr= 0.01) # optimizer= torch.optim.RMSprop(model.parameters(), lr= 0.01) # optimizer= torch.optim.Adamax(model.parameters(),lr= 0.01) # 訓(xùn)練 epoch_list=[] loss_list=[] for epoch in range(100): y_pred= model(x_data) loss= criterion(y_pred, y_data) epoch_list.append(epoch) loss_list.append(loss.item()) print(epoch, loss.item()) optimizer.zero_grad() #梯度歸零 loss.backward() #反向傳播 optimizer.step() #更新參數(shù) print("w= ", model.linear.weight.item()) print("b= ",model.linear.bias.item()) x_test= torch.Tensor([[7.0]]) y_test= model(x_test) print("y_pred= ",y_test.data) plt.plot(epoch_list, loss_list) plt.xlabel("epoch") plt.ylabel("loss_val") plt.show()
使用SGD優(yōu)化器圖像:
使用ASGD優(yōu)化器圖像:
使用Adagrad優(yōu)化器圖像:
使用Adamax優(yōu)化器圖像:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
用map函數(shù)來完成Python并行任務(wù)的簡(jiǎn)單示例
這篇文章主要介紹了用map函數(shù)來完成Python并行任務(wù)的簡(jiǎn)單示例,多線程和多進(jìn)程編程的問題一直都是Python中的熱點(diǎn)和難點(diǎn),需要的朋友可以參考下2015-04-04五分鐘學(xué)會(huì)怎么用Pygame做一個(gè)簡(jiǎn)單的貪吃蛇
這篇文章主要介紹了五分鐘學(xué)會(huì)怎么用Pygame做一個(gè)簡(jiǎn)單的貪吃蛇,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2021-01-01Python使用urllib模塊對(duì)URL網(wǎng)址中的中文編碼與解碼實(shí)例詳解
這篇文章主要介紹了Python使用urllib模塊對(duì)URL網(wǎng)址中的中文編碼與解碼(Python使用urllib模塊對(duì)URL編碼與解碼)實(shí)例詳解,需要的朋友可以參考下2020-02-02Python實(shí)現(xiàn)號(hào)碼歸屬地查詢功能
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)對(duì)手機(jī)號(hào)碼進(jìn)行地域分析并查詢歸屬地的功能,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-12-12Python內(nèi)置函數(shù)locals和globals對(duì)比
這篇文章主要介紹了Python內(nèi)置函數(shù)locals和globals對(duì)比,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04Python中兩個(gè)列表數(shù)字相加的4種方法示例詳解
這篇文章主要給大家介紹了關(guān)于Python中兩個(gè)列表數(shù)字相加的4種方法,我們可以使用Python的加號(hào)和減號(hào)運(yùn)算符來實(shí)現(xiàn)兩個(gè)數(shù)字的相加減,需要的朋友可以參考下2023-08-08python GUI庫(kù)圖形界面開發(fā)之PyQt5動(dòng)態(tài)(可拖動(dòng)控件大小)布局控件QSplitter詳細(xì)使用方法與實(shí)例
這篇文章主要介紹了python GUI庫(kù)圖形界面開發(fā)之PyQt5動(dòng)態(tài)(可拖動(dòng)控件大小)布局控件QSplitter詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下2020-03-03