在PyTorch中調整全連接神經網絡(也稱為密集連接神經網絡或DNN)的超參數是一個重要的過程,可以顯著提高模型的性能。以下是一些關鍵的超參數及其調整方法:
import torch
import torch.nn as nn
import torch.optim as optim
from torchvision import datasets, transforms
import optuna
# 定義超參數搜索空間
def objective(trial):
# 建議超參數
hidden_size = trial.suggest_int('hidden_size', 32, 256)
lr = trial.suggest_float('lr', 1e-5, 1e-1, log=True)
optimizer_name = trial.suggest_categorical('optimizer', ['adam', 'sgd'])
# 創建模型
model = SimpleNN(input_size=28*28, hidden_size=hidden_size, output_size=10)
# 定義損失函數和優化器
criterion = nn.CrossEntropyLoss()
if optimizer_name == 'adam':
optimizer = optim.Adam(model.parameters(), lr=lr)
else:
optimizer = optim.SGD(model.parameters(), lr=lr)
# 訓練模型(簡化版,僅作為示例)
for epoch in range(10): # 假設訓練10個周期
# 訓練代碼...
pass
# 返回驗證準確率等指標
# 這里需要根據實際訓練代碼來返回相應的驗證指標
return validation_accuracy
# 創建和研究優化器
study = optuna.create_study(direction='maximize')
study.optimize(objective, n_trials=100)
# 輸出最佳超參數
print("Best trial:")
trial = study.best_trial
print(" Value: ", trial.value)
通過上述方法,您可以有效地調整PyTorch全連接神經網絡的超參數,以獲得更好的模型性能。