神經網絡是一種模仿人腦神經元鏈接的計算模型, 由多層節點組成, 用于學習數據之間的復雜模式和關系。神經網絡通過調整神經元之間的連接權重來優化預測結果,這個過程可以涉及到向前傳播,損失計算,反向傳播和參數更新。
PyTorch 提供了一個非常方便的接口來構建神經網絡模型。這里記錄下我的測試案例。
模型定義
創建了一個名為 SimpleNN 的神經網絡類,繼承自 nn.Module
網絡結構包含兩個全連接層:fc1(輸入2維,輸出2維)和 fc2(輸入2維,輸出1維),使用ReLU激活函數。
import torch.nn as nn
import torch.optim as optim
from sympy.printing.pytorch import torchclass SimpleNN(nn.Module):def __init__(self):super(SimpleNN, self).__init__()self.fc1 = nn.Linear(2,2)self.fc2 = nn.Linear(2,1)def forward(self, x):x = torch.relu(self.fc1(x))x = self.fc2(x)return x
向前傳播
實例化模型 model,生成隨機輸入數據 x(1個樣本,2個特征), 通過 model(x) 執行前向傳播,得到輸出 output
model = SimpleNN()
print(model)# 隨機輸入
x = torch.randn(1, 2)
print("\n隨機輸入:")
print(x)# 前向傳播
output = model(x)
print("\n前向傳播結果:")
print(output)
損失計算
定義均方誤差損失函數 MSELoss
生成隨機目標值 target
計算模型輸出與目標值之間的損失 loss
# 定義損失函數(例如均方誤差 MSE)
criterion = nn.MSELoss()# 假設目標值為 1
target = torch.randn(1, 1)
print("\n目標值:")
print(target)# 計算損失
loss = criterion(output, target)
print("\n損失:")
print(loss)