pytorch的初體驗(yàn)——線性回歸

注:安裝pytorch時(shí),首先選擇用anaconda的方法安裝,但是因?yàn)閜ycharm在工程設(shè)置的時(shí)候總會(huì)遇到一點(diǎn)問題,所以就沒有安裝anaconda,而是安裝python3.5.4+TensorFlow-gpu+cuda8.0之后再根據(jù)pytorch官網(wǎng)提供的方法安裝pytorch。安裝完pytorch之后,使用import torch 發(fā)現(xiàn)numpy的版本過低,這時(shí)候需要關(guān)閉python。使用pip install --upgrade numpy 進(jìn)行升級(jí),如果遇到權(quán)限問題,需在管理員cmd下安裝。

import?numpy?as?np

import?torch

inputs?=?np.array([[73,?67,?43],

[91,?88,?64],

[87,?134,?58],

[102,?43,?37],

[69,?96,?70]],?dtype='float32')

targets?=?np.array([[56,?70],

[81,?101],

[119,?133],

[22,?37],

[103,?119]],?dtype='float32')

inputs?=?torch.from_numpy(inputs)

targets?=?torch.from_numpy(targets)

print(inputs)

print(targets)

w?=?torch.randn(2,?3,?requires_grad=True)

b?=?torch.randn(2,?requires_grad=True)

print(w)

print(b)

def?model(x):

return?x?@?w.t()?+?b

preds?=?model(inputs)

print(preds)

def?mse(t1,?t2):

diff?=?t1?-?t2

return?torch.sum(diff*diff)/diff.numel()

loss?=?mse(preds,?targets)

print(loss)

loss.backward()

print(w)

print(w.grad)

w.grad.zero_()

b.grad.zero_()

print(w.grad)

print(b.grad)

preds?=?model(inputs)

print(preds)

loss?=?mse(preds,?targets)

print(loss)

loss.backward()

print(w.grad)

print(b.grad)

with?torch.no_grad():

w?-=?w.grad*1e-5

b?-=?b.grad*1e-5

w.grad.zero_()

b.grad.zero_()

print(w)

print(b)

preds?=?model(inputs)

loss?=?mse(preds,?targets)

print(loss)

for?i?in?range(1000):

preds?=?model(inputs)

loss?=?mse(preds,?targets)

loss.backward()

with?torch.no_grad():

w?-=?w.grad?*?1e-5

b?-=?b.grad?*?1e-5

w.grad.zero_()

b.grad.zero_()

preds?=?model(inputs)

loss?=?mse(preds,?targets)

print(loss)

print(preds)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容