Pytorch之線性回歸

2021-10-02 20:06:37 字數 2377 閱讀 8693

import torch

from torch import nn

import numpy as np

import torch.utils.data as data

from torch.nn import init

# 使得模型的可復現性

torch.manual_seed(1)

# 設定預設的資料格式

torch.set_default_tensor_type(

'torch.floattensor'

)# 1.資料處理

num_inputs =

2num_examples =

1000

true_w =[2

,-3.4]

true_b =

4.2features = torch.tensor(np.random.normal(0,

1,(num_examples, num_inputs)

), dtype=torch.

float

)labels = true_w[0]

* features[:,

0]+ true_w[1]

* features[:,

1]+ true_b

# 增加資料的雜訊, 模擬真實資料

labels += torch.tensor(np.random.normal(0,

0.01

, size=labels.size())

, dtype=torch.

float

)# 2.讀取資料

batch_size =

10dataset = data.tensordataset(features, labels)

# 檢視資料的儲存型別 [*dataset]

data_iter = data.dataloader(dataset, batch_size, shuffle=

true

, num_workers=2)

# 3.定義網路

class

linearnet

(nn.module)

:def

__init__

(self, n_feature)

:super

(linearnet, self)

.__init__(

) self.linear = nn.linear(n_feature,1)

defforward

(self, x)

:return self.linear(x)

net = linearnet(feature)

# 初始化網路的引數(有多種初始化的方法,但是一般偏值設定為零)

for name, param in net.named_parameters():

if name ==

"linear.weight"

:#權重

init.normal_(param, mean=

0.0, std=

0.01

)else

:#偏值

init.constant_(param, val=

0.0)

# 4.訓練

# 超引數

lr =

0.01

batch_size =

10num_epochs =

5# 定義損失

critrion = nn.mseloss(

)# 定義優化函式

optimizer = t.optim.sgd(net.parameters(

), lr=lr)

for epoch in

range

(num_epochs)

:for x, y in data_iter:

out = net(x)

loss = critrion(out, y.view(-1

,1))

# 梯度清零

optimizer.zero_grad(

) loss.backward(

)# 梯度更新

optimizer.step(

)print

("epcoch:%d, loss:%f"

%(epoch, loss.item())

)

結果:

epcoch:0, loss:0.861575

epcoch:1, loss:0.015179

epcoch:2, loss:0.000336

epcoch:3, loss:0.000168

epcoch:4, loss:0.000151

Pytorch入門之線性回歸

這裡定義乙個簡單的神經網路來做乙個線性回歸問題 神經元之間的線就不連了,大家知道是個全連線層就好 搭建這樣乙個網路,首先就是需要定義乙個class,class必須得繼承nn.module類,常用來被繼承,然後使用者去編寫自己的網路 層。類中的初始化部分需要去例化自己的層。這裡需要定義2個全連線層,因...

pytorch線性回歸

線性回歸假設輸出與各個輸入之間是線性關係 y wx b pytorch定義線性回歸模型 def linreg x,w,b return torch.mm x,w b線性回歸常用損失函式是平方損失 2優化函式 隨機梯度下降 小批量隨機梯度下降 mini batch stochastic gradien...

pytorch 線性回歸

import torch from torch.autograd import variable import torch.nn.functional as f import matplotlib.pyplot as plt print torch.linspace 1,1,100 x torch....