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....