pytorch搭建簡單網絡


pytorch搭建一個簡單神經網絡

 1 import torch
 2 import torch.nn as nn
 3 
 4 # 定義數據
 5 # x:輸入數據
 6 # y:標簽
 7 x = torch.Tensor([[0.2, 0.4], [0.2, 0.3], [0.3, 0.4]])
 8 y = torch.Tensor([[0.6], [0.5], [0.7]])
 9 
10 
11 class MyNet(nn.Module):
12     def __init__(self):
13         # 調用基類構造函數
14         super(MyNet, self).__init__()
15         # 容器,使用時順序調用各個層
16         self.fc = nn.Sequential(
17             # 定義三層
18             # 輸入層
19             nn.Linear(2, 4),
20             # 激活函數
21             nn.Sigmoid(),
22             # 隱藏層
23             nn.Linear(4, 4),
24             nn.Sigmoid(),
25             # 輸出層
26             nn.Linear(4, 1),
27         )
28         # 優化器
29         # params:優化對象
30         # lr:學習率
31         self.opt = torch.optim.Adam(params=self.parameters(), lr=0.001)
32         # 損失函數,均方差
33         self.mls = torch.nn.MSELoss()
34 
35     def forward(self, inputs):
36         # 前向傳播
37         return self.fc(inputs)
38 
39     def train(self, x, y):
40         # 訓練
41         # 得到輸出結果
42         out = self.forward(x)
43         # 計算誤差
44         loss = self.mls(out, y)
45         # print('loss', loss)
46         # 梯度置零
47         self.opt.zero_grad()
48         # 誤差反向傳播
49         loss.backward()
50         # 更新權重
51         self.opt.step()
52 
53     def test(self, x):
54         # 測試,就是前向傳播的過程
55         return self.forward(x)
56 
57 
58 net = MyNet()
59 for i in range(10000):
60     net.train(x, y)
61 x = torch.Tensor([[0.4, 0.1]])
62 out = net.test(x)
63 print(out)  # 輸出結果 tensor([[0.5205]], grad_fn=<AddmmBackward>)

訓練集較少,可能結果不是很好,主要是結構,畢竟剛開始接觸這個pytorch


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM