亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解Pytorch 使用Pytorch擬合多項(xiàng)式(多項(xiàng)式回歸)

 更新時(shí)間:2018年05月24日 08:44:13   作者:ZhichaoDuan  
這篇文章主要介紹了詳解Pytorch 使用Pytorch擬合多項(xiàng)式(多項(xiàng)式回歸),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

使用Pytorch來(lái)編寫神經(jīng)網(wǎng)絡(luò)具有很多優(yōu)勢(shì),比起Tensorflow,我認(rèn)為Pytorch更加簡(jiǎn)單,結(jié)構(gòu)更加清晰。

希望通過(guò)實(shí)戰(zhàn)幾個(gè)Pytorch的例子,讓大家熟悉Pytorch的使用方法,包括數(shù)據(jù)集創(chuàng)建,各種網(wǎng)絡(luò)層結(jié)構(gòu)的定義,以及前向傳播與權(quán)重更新方式。

比如這里給出

    

很顯然,這里我們只需要假定

這里我們只需要設(shè)置一個(gè)合適尺寸的全連接網(wǎng)絡(luò),根據(jù)不斷迭代,求出最接近的參數(shù)即可。

但是這里需要思考一個(gè)問(wèn)題,使用全連接網(wǎng)絡(luò)結(jié)構(gòu)是毫無(wú)疑問(wèn)的,但是我們的輸入與輸出格式是什么樣的呢?

只將一個(gè)x作為輸入合理嗎?顯然是不合理的,因?yàn)槊恳粋€(gè)神經(jīng)元其實(shí)模擬的是wx+b的計(jì)算過(guò)程,無(wú)法模擬冪運(yùn)算,所以顯然我們需要將x,x的平方,x的三次方,x的四次方組合成一個(gè)向量作為輸入,假設(shè)有n個(gè)不同的x值,我們就可以將n個(gè)組合向量合在一起組成輸入矩陣。

這一步代碼如下:

def make_features(x): 
 x = x.unsqueeze(1) 
 return torch.cat([x ** i for i in range(1,4)] , 1) 

我們需要生成一些隨機(jī)數(shù)作為網(wǎng)絡(luò)輸入:

def get_batch(batch_size=32): 
 random = torch.randn(batch_size) 
 x = make_features(random) 
 '''Compute the actual results''' 
 y = f(x) 
 if torch.cuda.is_available(): 
  return Variable(x).cuda(), Variable(y).cuda() 
 else: 
  return Variable(x), Variable(y) 

其中的f(x)定義如下:

w_target = torch.FloatTensor([0.5,3,2.4]).unsqueeze(1) 
b_target = torch.FloatTensor([0.9]) 
 
def f(x): 
 return x.mm(w_target)+b_target[0] 

接下來(lái)定義模型:

class poly_model(nn.Module): 
 def __init__(self): 
  super(poly_model, self).__init__() 
  self.poly = nn.Linear(3,1) 
 
 def forward(self, x): 
  out = self.poly(x) 
  return out 
if torch.cuda.is_available(): 
 model = poly_model().cuda() 
else: 
 model = poly_model() 

接下來(lái)我們定義損失函數(shù)和優(yōu)化器:

criterion = nn.MSELoss() 
optimizer = optim.SGD(model.parameters(), lr = 1e-3) 

網(wǎng)絡(luò)部件定義完后,開(kāi)始訓(xùn)練:

epoch = 0 
while True: 
 batch_x,batch_y = get_batch() 
 output = model(batch_x) 
 loss = criterion(output,batch_y) 
 print_loss = loss.data[0] 
 optimizer.zero_grad() 
 loss.backward() 
 optimizer.step() 
 epoch+=1 
 if print_loss < 1e-3: 
  break 

到此我們的所有代碼就敲完了,接下來(lái)我們開(kāi)始詳細(xì)了解一下其中的一些代碼。

在make_features()定義中,torch.cat是將計(jì)算出的向量拼接成矩陣。unsqueeze是作一個(gè)維度上的變化。

get_batch中,torch.randn是產(chǎn)生指定維度的隨機(jī)數(shù),如果你的機(jī)器支持GPU加速,可以將Variable放在GPU上進(jìn)行運(yùn)算,類似語(yǔ)句含義相通。

x.mm是作矩陣乘法。

模型定義是重中之重,其實(shí)當(dāng)你掌握Pytorch之后,你會(huì)發(fā)現(xiàn)模型定義是十分簡(jiǎn)單的,各種基本的層結(jié)構(gòu)都已經(jīng)為你封裝好了。所有的層結(jié)構(gòu)和損失函數(shù)都來(lái)自torch.nn,所有的模型構(gòu)建都是從這個(gè)基類 nn.Module繼承的。模型定義中,__init__與forward是有模板的,大家可以自己體會(huì)。

nn.Linear是做一個(gè)線性的運(yùn)算,參數(shù)的含義代表了輸入層與輸出層的結(jié)構(gòu),即3*1;在訓(xùn)練階段,有幾行是Pytorch不同于別的框架的,首先loss是一個(gè)Variable,通過(guò)loss.data可以取出一個(gè)Tensor,再通過(guò)data[0]可以得到一個(gè)int或者float類型的值,我們才可以進(jìn)行基本運(yùn)算或者顯示。每次計(jì)算梯度之前,都需要將梯度歸零,否則梯度會(huì)疊加。個(gè)人覺(jué)得別的語(yǔ)句還是比較好懂的,如果有疑問(wèn)可以在下方評(píng)論。

下面是我們的擬合結(jié)果

其實(shí)效果肯定會(huì)很好,因?yàn)橹皇且粋€(gè)非常簡(jiǎn)單的全連接網(wǎng)絡(luò),希望大家通過(guò)這個(gè)小例子可以學(xué)到Pytorch的一些基本操作。往后我們會(huì)繼續(xù)更新,完整代碼請(qǐng)戳,https://github.com/ZhichaoDuan/PytorchCourse

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python中表示字符串的三種方法

    Python中表示字符串的三種方法

    這篇文章主要介紹了Python中表示字符串的三種方法的相關(guān)資料,需要的朋友可以參考下
    2017-09-09
  • Python pathlib模塊使用方法及實(shí)例解析

    Python pathlib模塊使用方法及實(shí)例解析

    這篇文章主要介紹了Python pathlib模塊使用方法及實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • python的描述符(descriptor)、裝飾器(property)造成的一個(gè)無(wú)限遞歸問(wèn)題分享

    python的描述符(descriptor)、裝飾器(property)造成的一個(gè)無(wú)限遞歸問(wèn)題分享

    這篇文章主要介紹了python的描述符(descriptor)、裝飾器(property)造成的一個(gè)無(wú)限遞歸問(wèn)題分享,一個(gè)不太會(huì)遇到的問(wèn)題,需要的朋友可以參考下
    2014-07-07
  • Python基于百度API識(shí)別并提取圖片中文字

    Python基于百度API識(shí)別并提取圖片中文字

    本文主要實(shí)現(xiàn)了利用百度 AI 開(kāi)發(fā)平臺(tái)的 OCR 文字識(shí)別 API 識(shí)別并提取圖片中的文字。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • python爬蟲 正則表達(dá)式解析

    python爬蟲 正則表達(dá)式解析

    這篇文章主要介紹了python爬蟲 正則表達(dá)式解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • python實(shí)現(xiàn)自動(dòng)打卡小程序

    python實(shí)現(xiàn)自動(dòng)打卡小程序

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)自動(dòng)打卡小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • python經(jīng)典100題之皮球掉落的幾種解法

    python經(jīng)典100題之皮球掉落的幾種解法

    這篇文章主要給大家介紹了關(guān)于python經(jīng)典100題之皮球掉落的幾種解法,這個(gè)問(wèn)題相信不少人都可以從網(wǎng)絡(luò)上找到相對(duì)應(yīng)的答案本文提供了3種解法,需要的朋友可以參考下
    2023-11-11
  • 淺析python中的set類型

    淺析python中的set類型

    這篇文章主要介紹了python中的set類型,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 詳解Pytorch+PyG實(shí)現(xiàn)GAT過(guò)程示例

    詳解Pytorch+PyG實(shí)現(xiàn)GAT過(guò)程示例

    這篇文章主要為大家介紹了Pytorch+PyG實(shí)現(xiàn)GAT過(guò)程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • python使用cookie庫(kù)操保存cookie詳解

    python使用cookie庫(kù)操保存cookie詳解

    Python中Cookie模塊(python3中為http.cookies)提供了一個(gè)類似字典的特殊對(duì)象SimpleCookie,其中存儲(chǔ)并管理著稱為Morsel的cookie值集合,這里介紹了python操作cookie的使用方法
    2014-03-03

最新評(píng)論