PyTorch全連接神經網絡的訓練過程主要包括以下步驟:
數據準備:
定義模型:
torch.nn
模塊定義一個全連接神經網絡。例如,一個簡單的多層感知器(MLP):import torch.nn as nn
class MLP(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
super(MLP, self).__init__()
self.fc1 = nn.Linear(input_size, hidden_size)
self.relu = nn.ReLU()
self.fc2 = nn.Linear(hidden_size, output_size)
def forward(self, x):
x = self.fc1(x)
x = self.relu(x)
x = self.fc2(x)
return x
設置損失函數和優化器:
import torch.optim as optim
loss_function = nn.CrossEntropyLoss() # 或 nn.MSELoss() 用于回歸問題
optimizer = optim.SGD(model.parameters(), lr=0.001, momentum=0.9)
訓練循環:
requires_grad
屬性為True
,以便計算梯度。model.train() # 設置模型為訓練模式
for epoch in range(num_epochs):
for data, labels in train_loader: # 假設train_loader是數據加載器
optimizer.zero_grad() # 清除梯度
outputs = model(data) # 前向傳播
loss = loss_function(outputs, labels) # 計算損失
loss.backward() # 反向傳播
optimizer.step() # 更新參數
# 每個epoch結束后評估模型
model.eval() # 設置模型為評估模式
with torch.no_grad():
# 在驗證集上進行評估
pass
測試模型:
保存和加載模型:
torch.save(model.state_dict(), 'model.pth') # 保存模型
model = MLP(input_size, hidden_size, output_size) # 創建模型實例
model.load_state_dict(torch.load('model.pth')) # 加載模型
model.eval() # 設置模型為評估模式
通過以上步驟,你可以使用PyTorch訓練一個全連接神經網絡。根據具體任務和數據集的不同,你可能需要調整模型結構、損失函數、優化器和其他超參數。