阅读量:3
在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)来生成所有可能的超参数组合,并在循环中实例化模型并进行训练和评估。最后,我们根据评估得分选择最佳的超参数组合。您可以根据实际情况修改超参数网格和评估得分的计算方法。