gpt4 book ai didi

pytorch - 如何通过 Pytorch 和 Optuna 进行交叉验证

转载 作者:行者123 更新时间:2023-12-04 04:00:03 24 4
gpt4 key购买 nike

我想对官方 Optuna 和基于 pytorch 的示例代码 ( https://github.com/optuna/optuna/blob/master/examples/pytorch_simple.py ) 使用交叉验证。
想过拆分数据进行交叉验证,并尝试对每一折进行参数调优,但似乎无法获得每个参数的平均准确率,因为每次可以在study.trials_dataframe()中检查的参数都不同。

最佳答案

我认为我们需要评估所有折叠并计算目标函数内的平均值。我创建了一个 example notebook ,所以请看一看。
在笔记本中,我稍微修改了objective函数来传递带有参数的数据集并添加了一个包装函数 objective_cv调用 objective函数与分割数据集。然后,我优化了objective_cv而不是 objective功能。

def objective(trial, train_loader, valid_loader):

# Remove the following line.
# train_loader, valid_loader = get_mnist()

...

return accuracy


def objective_cv(trial):

# Get the MNIST dataset.
dataset = datasets.MNIST(DIR, train=True, download=True, transform=transforms.ToTensor())

fold = KFold(n_splits=3, shuffle=True, random_state=0)
scores = []
for fold_idx, (train_idx, valid_idx) in enumerate(fold.split(range(len(dataset)))):
train_data = torch.utils.data.Subset(dataset, train_idx)
valid_data = torch.utils.data.Subset(dataset, valid_idx)

train_loader = torch.utils.data.DataLoader(
train_data,
batch_size=BATCHSIZE,
shuffle=True,
)
valid_loader = torch.utils.data.DataLoader(
valid_data,
batch_size=BATCHSIZE,
shuffle=True,
)

accuracy = objective(trial, train_loader, valid_loader)
scores.append(accuracy)
return np.mean(scores)


study = optuna.create_study(direction="maximize")
study.optimize(objective_cv, n_trials=20, timeout=600)

关于pytorch - 如何通过 Pytorch 和 Optuna 进行交叉验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63224426/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com