引言
所有神经网络在训练过程中都需要选择超参数,而这些超参数对收敛速度和最终性能有着非常显著的影响。
这些超参数需要特别调整,以充分发挥模型的潜力。超参数调优过程是神经网络训练中不可或缺的一部分,某种程度上,它是一个主要基于梯度优化问题中的'无梯度'部分。
在这篇文章中,我们将探讨超参数优化的领先库之一——Optuna,它使这一过程变得非常简单且高效。我们将把这个过程分为几个关键步骤。
第一步:环境准备与模型定义
首先,我们需要导入相关的包,并使用 PyTorch 创建一个简单的全连接神经网络。该全连接神经网络包含一个隐藏层。
为了保证可复现性,我们还设置了一个手动随机种子。
import torch
import torch.nn as nn
import torch.optim as optim
from torchvision import datasets, transforms
import optuna
from optuna.pruners import MedianPruner
from optuna.samplers import TPESampler
# 设置随机种子以保证实验可复现性
torch.manual_seed(42)
if torch.cuda.is_available():
torch.cuda.manual_seed_all(42)
class SimpleNet(nn.Module):
def __init__(self, hidden_size):
super(SimpleNet, self).__init__()
self.fc1 = nn.Linear(784, hidden_size)
self.relu = nn.ReLU()
self.fc2 = nn.Linear(hidden_size, 10)
def forward(self, x):
x = x.view(-1, 784)
x = self.fc1(x)
x = self.relu(x)
x = self.fc2(x)
return x


