Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何通过Pytorch和Optuna进行交叉验证_Pytorch_Optuna - Fatal编程技术网

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

我如何通过Pytorch和Optuna进行交叉验证,pytorch,optuna,Pytorch,Optuna,我想对基于Optuna和pytorch的官方示例代码()使用交叉验证 我曾考虑分割数据进行交叉验证,并尝试对每个折叠进行参数调整,但似乎无法获得每个参数的平均精度,因为这些参数可以在研究中检查。trials_dataframe()每次都不同。我认为我们需要评估所有折叠并计算目标函数内的平均值。我创建了一个,请看一看 在笔记本中,我稍微修改了objective函数以传递带有参数的数据集,并添加了一个包装函数objective\u cv,以调用带有拆分数据集的objective函数。然后,我优化了o

我想对基于Optuna和pytorch的官方示例代码()使用交叉验证


我曾考虑分割数据进行交叉验证,并尝试对每个折叠进行参数调整,但似乎无法获得每个参数的平均精度,因为这些参数可以在研究中检查。trials_dataframe()每次都不同。

我认为我们需要评估所有折叠并计算目标函数内的平均值。我创建了一个,请看一看

在笔记本中,我稍微修改了
objective
函数以传递带有参数的数据集,并添加了一个包装函数
objective\u cv
,以调用带有拆分数据集的
objective
函数。然后,我优化了
objective_cv
而不是
objective
函数

def目标(试用、列车装载机、有效装载机):
#拆下以下行。
#列车装载机,有效装载机=获取装载机()
...
返回精度
def目标简历(试用版):
#获取MNIST数据集。
dataset=datasets.MNIST(DIR,train=True,download=True,transform=transforms.ToTensor())
fold=KFold(n\u splits=3,shuffle=True,random\u state=0)
分数=[]
对于枚举(fold.split(range(len(dataset)))中的fold_idx(train_idx,valid_idx):
序列数据=torch.utils.data.Subset(数据集,序列idx)
valid\u data=torch.utils.data.Subset(数据集,valid\u idx)
列车装载机=torch.utils.data.DataLoader(
列车运行数据,
批次大小=批次大小,
洗牌=正确,
)
有效的\u加载程序=torch.utils.data.DataLoader(
有效的数据,
批次大小=批次大小,
洗牌=正确,
)
精度=目标(试验、列车装载机、有效装载机)
分数。追加(准确性)
返回np.平均值(分数)
研究=选择。创建研究(方向=“最大化”)
研究.优化(目标变异系数,n试验=20,超时=600)

简短回答:Optuna的贝叶斯过程是交叉验证试图近似的过程。检查这个答案,如果可能的话,在那里发表评论;我认为此时无需交叉张贴: