在Torch中進行超參數搜索通常可以使用GridSearch或者RandomSearch方法。以下是一個簡單的示例代碼,使用GridSearch方法來搜索超參數的最佳組合:
from torch import nn
from torch.optim import Adam
from sklearn.model_selection import ParameterGrid
# 定義模型
class SimpleModel(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
super(SimpleModel, 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
# 定義超參數網格
param_grid = {
'input_size': [10, 20],
'hidden_size': [100, 200],
'output_size': [2, 3],
'learning_rate': [0.001, 0.01]
}
# 使用GridSearch搜索最佳超參數組合
best_score = 0
best_params = None
for params in ParameterGrid(param_grid):
model = SimpleModel(params['input_size'], params['hidden_size'], params['output_size'])
optimizer = Adam(model.parameters(), lr=params['learning_rate'])
# 訓練模型并評估性能
# 這里省略訓練過程
score = 0.8 # 假設評估得分為0.8
if score > best_score:
best_score = score
best_params = params
print("Best score:", best_score)
print("Best params:", best_params)
在這個示例中,我們定義了一個簡單的神經網絡模型SimpleModel,然后定義了超參數的網格param_grid。接下來,我們使用ParameterGrid(param_grid)來生成所有可能的超參數組合,并在循環中實例化模型并進行訓練和評估。最后,我們根據評估得分選擇最佳的超參數組合。您可以根據實際情況修改超參數網格和評估得分的計算方法。