參考《pytorch學習筆記(1):開始乙個簡單的分類器》
首先,執行完整**,看看效果:
自定義乙個資料集;
定義乙個神經網路;
呼叫神經網路,計算損失值;
測試訓練集,顯示結果;
測試自定義測試集,顯示結果。
# 生成乙個tensor,100行2列,元素全是1
n_data = torch.ones(
100,2)
# 返回的結果x0是乙個和n_data形狀一樣,以2為平均值,以1為標準差的正態分佈隨機數,第乙個引數為mean,第二個引數是std
x0 = torch.normal(
2*n_data,1)
# 生成100行1列的tensor
y0 = torch.zeros(
100)
# 將x0和x1拼接起來
x = torch.cat(
(x0, x1)).
type
(torch.floattensor)
# 線性擬合函式,第乙個引數輸入神經元個數,第二個引數輸出神經元個數
self.n_hidden = torch.nn.linear(n_feature, n_hidden)
# relu啟用函式,一般使用relu作為中間隱層神經元的啟用函式,相當於torch.nn.functional.relu()
x_layer = torch.relu(self.n_hidden(x_layer)
)# softmax啟用函式,用於多分類神經網路輸出
x_layer = torch.nn.functional.softmax(x_layer)
# sgd優化器,pytorch中已經封裝好了,呼叫即可
optimizer = torch.optim.sgd(net.parameters(
), lr=
0.02
)# 交叉熵損失函式,pytorch已封裝,直接呼叫
loss_func = torch.nn.crossentropyloss(
)# 梯度清空
optimizer.zero_grad(
)# 反向傳播
loss.backward(
)# 引數更新
optimizer.step(
)# 取最大值
train_predict = torch.
max(train_result,1)[1]
擴充套件延伸完整**:pytorch封裝了哪些啟用函式?
pytorch封裝了哪些損失函式?
pytorch封裝了哪些優化器函式?
import torch
import matplotlib.pyplot as plt
# 1.資料集處理
n_data = torch.ones(
100,2)
x0 = torch.normal(
2*n_data,1)
y0 = torch.zeros(
100)
x1 = torch.normal(-2
*n_data,1)
y1 = torch.ones(
100)
x = torch.cat(
(x0, x1)).
type
(torch.floattensor)
y = torch.cat(
(y0, y1)).
type
(torch.longtensor)
print
(x.shape)
print
(y.shape)
# 2.網路結構
class
net(torch.nn.module)
:def
__init__
(self, n_feature, n_hidden, n_output)
:super
(net, self)
.__init__(
) self.n_hidden = torch.nn.linear(n_feature, n_hidden)
self.out = torch.nn.linear(n_hidden, n_output)
defforward
(self, x_layer)
: x_layer = torch.relu(self.n_hidden(x_layer)
) x_layer = self.out(x_layer)
x_layer = torch.nn.functional.softmax(x_layer)
return x_layer
if __name__ ==
'__main__'
:# 3.呼叫網路,計算損失函式
net = net(n_feature=
2, n_hidden=
100, n_output=2)
optimizer = torch.optim.sgd(net.parameters(
), lr=
0.02
) loss_func = torch.nn.crossentropyloss(
)for i in
range
(100):
out = net(x)
loss = loss_func(out, y)
print
("loss is {}"
.format
(loss)
)
optimizer.zero_grad(
) loss.backward(
) optimizer.step(
)# 4.train result測試訓練集
train_result = net(x)
train_predict = torch.
max(train_result,1)
[1] plt.scatter(x.data.numpy()[
:,0]
, x.data.numpy()[
:,1]
, c=train_predict.data.numpy())
plt.show(
)# 5.test測試測試集
t_data = torch.zeros(
100,2)
test_data = torch.normal(t_data,5)
test_result = net(test_data)
prediction = torch.
max(test_result,1)
[1] plt.scatter(test_data[:,
0], test_data[:,
1], c=prediction.data.numpy())
plt.show(
)
如何用pytorch搭建乙個簡單的神經網路?
匯入模組 import torch import torch.nn.functional as f from torch.autograd import variable import matplotlib.pyplot as plt x torch.unsqueeze torch.linspace...
搭建乙個簡單的mvc(一)
框架的基本結構 先定義乙個入口檔案index.php.作用是1 定義常量 2 載入函式庫 3 啟動框架 header content type text html charset utf 8 define mulu trim str replace dir 定義框架所在目錄 define core ...
利用pytorch做乙個簡單的回歸網路
最近整理了一下pytorch的筆記,把很簡單的pytorch搭建乙個回歸網路的code貼上來 import torch import torch.nn.functional as f x torch.unsqueeze torch.linspace 2,2,100 dim 1 在 1,1 這個區間內...