还是使用房价数据集进行实战。因为模型简单,使用超参数搜索的时候速度快。
在之前的回归代码的基础上加入for循环:
python
for lr in [1e-2, 3e-2, 3e-1, 1e-3]: # 把参数组合放在这,参数代表学习率
#每次拿一个参数就要重新实例化一个模型
epoch = 100
model = NeuralNetwork()
# 1. 定义损失函数 采用MSE损失
loss_fct = nn.MSELoss()
# 2. 定义优化器 采用SGD
# Optimizers specified in the torch.optim package
optimizer = torch.optim.SGD(model.parameters(), lr=lr, momentum=0.9)
# 3. early stop
early_stop_callback = EarlyStopCallback(patience=10, min_delta=1e-3)
model = model.to(device)
record = training(
model,
train_loader,
val_loader,
epoch,
loss_fct,
optimizer,
early_stop_callback=early_stop_callback,
eval_step=len(train_loader)
)
print("lr: {}".format(lr))
plot_learning_curves(record)
model.eval()
loss = evaluating(model, val_loader, loss_fct)
print(f"loss: {loss:.4f}")
效果: