一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

pytorch從入門到精通系列之線性回歸

 AI量化實(shí)驗(yàn)室 2023-10-12 發(fā)布于北京

之前的文章有提到,pytorch的入門讓人無比愉悅的。但畢竟是深度學(xué)習(xí),我說的門檻是和tensorflow比,本身深度學(xué)習(xí)對(duì)于微積分,線性代數(shù)和概率論還是有一定要求的。當(dāng)然,還是那句話,其實(shí)深度學(xué)習(xí)涉及的數(shù)學(xué)原理,比什么SVM,CRF要簡單太多,而且深度學(xué)習(xí)的變化和應(yīng)用場景比前者要多得多,所以學(xué)習(xí)深度學(xué)習(xí)是很有意義的。

很多官方或非官方的demo,都是長篇大論,因?yàn)橐菔疽粋€(gè)例子,需要準(zhǔn)備數(shù)據(jù),其實(shí)大部分的代碼是在準(zhǔn)備數(shù)據(jù),預(yù)處理,與深度學(xué)習(xí)本身沒有太大關(guān)系。這樣看起來不直觀,把初學(xué)者都給嚇住了。所以,打算寫一個(gè)入門系列,就是手動(dòng)造一些簡單的數(shù)據(jù),就是為了演示用。

本文要實(shí)現(xiàn)線性函數(shù)的擬合,就是比如y = 2*x+3這樣的線性函數(shù)。首先標(biāo)準(zhǔn)的步驟,導(dǎo)入torch和Variable。

import torch
from torch.autograd import Variable

然后準(zhǔn)備簡單的數(shù)據(jù),x=1,2,3, y = 2,4,6, 線性關(guān)系就是y=2*x。注意這里的tensor是3行一列,然后轉(zhuǎn)為Variable。

x_data = Variable(torch.Tensor([[1.0],[2.0],[3.0]]))
y_data = Variable(torch.Tensor([[2.0],[4.0],[6.0]]))

然后就可以定義網(wǎng)絡(luò)了,所有的模型都需要繼承自nn.Module。然后定義一個(gè)線性層,參數(shù)為1,1。實(shí)現(xiàn)forward函數(shù),用作訓(xùn)練迭代。

import torch.nn as nn
class Model(nn.Module):
def __init__(self):
super(Model,self).__init__()
self.linear = nn.Linear(1,1)

def forward(self,x):
y_pred = self.linear(x)
return y_pred

直接實(shí)例化模型,并定義損失函數(shù),這里按我們高數(shù)里學(xué)的,使用最小二乘法。然后使用隨機(jī)梯度下降對(duì)所有可優(yōu)化參數(shù)進(jìn)行優(yōu)化,lr是learning_rate學(xué)習(xí)速率,也就是梯度變化步長。

model = Model()
criterion = nn.MSELoss(size_average=False)
params = model.parameters()
optimizer = torch.optim.SGD(params=params,lr=0.01)

開發(fā)循環(huán)迭代500次,用x_data通過model得到y(tǒng)_pred,也是一個(gè)3x1的矩陣。然后通過criterion求loss值。

for epoch in range(500):
y_pred = model(x_data)#3x1
   
loss = criterion(y_pred,y_data)
#這里可以把loss打印出來看,值都是一樣的,因?yàn)槲覀儧]有優(yōu)化參數(shù)。使用data[0]是因?yàn)閘oss.data是一個(gè)list
print(epoch,loss.data[0])

   #然后是三步標(biāo)準(zhǔn)的,導(dǎo)數(shù)歸0,反向求導(dǎo),反向傳播  
    optimizer.zero_grad()    
loss.backward()
optimizer.step()
這里值得注意就是每個(gè)epoch,梯度都要?dú)w零。
print('訓(xùn)練完成!')
x_test = Variable(torch.Tensor([[4.0]]))
y_test = model(x_test)
#y_test是一個(gè)Variable,包括.data是一個(gè)FloatTensor,size=1x1
print('x_test:%d,預(yù)測(cè)值為%f'%(x_test.data[0][0],y_test.data[0][0]))

最后使用訓(xùn)練好的模型去測(cè)試,看下結(jié)果:

訓(xùn)練完成!

x_test:4,預(yù)測(cè)值為7.975748

關(guān)于作者:魏佳斌,互聯(lián)網(wǎng)產(chǎn)品/技術(shù)總監(jiān),北京大學(xué)光華管理學(xué)院(MBA),特許金融分析師(CFA),資深產(chǎn)品經(jīng)理/碼農(nóng)。偏愛python,深度關(guān)注互聯(lián)網(wǎng)趨勢(shì),人工智能,AI金融量化。致力于使用最前沿的認(rèn)知技術(shù)去理解這個(gè)復(fù)雜的世界。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    91精品国产av一区二区| 日本一区二区三区黄色| 欧洲一级片一区二区三区| 国产对白老熟女正在播放| 国内精品伊人久久久av高清| 日韩毛片视频免费观看| 久久精品国产在热久久| 精品香蕉国产一区二区三区| 丰满少妇被猛烈插入在线观看| 亚洲国产精品国自产拍社区| 欧美国产日产在线观看| 国产免费自拍黄片免费看| 国产精品视频一级香蕉| 国产成人精品在线一区二区三区| 国产专区亚洲专区久久| 欧美日韩成人在线一区| 激情综合网俺也狠狠地| 色一情一乱一区二区三区码| 91精品国产av一区二区| 激情综合五月开心久久| 色婷婷久久五月中文字幕| 深夜福利亚洲高清性感| 丰满人妻一二区二区三区av| 视频一区日韩经典中文字幕| 中文字幕人妻日本一区二区 | 日韩高清中文字幕亚洲| 亚洲国产av一二三区| 国产日产欧美精品视频| 国产一级不卡视频在线观看| 亚洲中文字幕在线综合视频| 国产亚洲不卡一区二区| 麻豆国产精品一区二区| 亚洲中文字幕剧情在线播放| 不卡一区二区高清视频| 在线懂色一区二区三区精品| 亚洲第一香蕉视频在线| 二区久久久国产av色| 少妇丰满a一区二区三区| 国产专区亚洲专区久久| 日韩中文字幕免费在线视频| 内用黄老外示儒术出处|