培训,开发设置和测试设置建议,以实现和调整超电流表

时间:2019-08-11 20:16:19

标签: machine-learning

我对使用经典训练,验证和测试集来实现和调整参数和超参数存有疑问。因此,如果有人可以向我阐明这些概念并为我提供一些以Python之类的语言实现的提示,将会很有帮助。

例如,如果我有一个神经网络,就我所知,参数调整(让我们考虑隐藏层的数量和每层神经元的数量)可以通过训练集进行调整。因此,当验证集大约占数据集的20%时,我可以使用以下算法调整我的超参数:

示例:调整批量大小和学习率:

hyperListB=[]
hyperListL=[]

//let´s suppose both lists have the same dimensions
for i in range(0,hyperListB):
   model=fit(train_set,hyperListB[i],hyperlistL[i]
   values[].add(evaluate(model,validation_set)  //add scores of each run
end for

for i in range(0,values):
   plot_loss_functions(values)

select best set of hyperparameters

model=fit(test_set, selecter_hyperparameters)
evaluate(model)

这一系列步骤是否正确?我搜索了不同的页面,但没有找到可以帮助我的东西。请记住,我不想使用交叉验证或其他基于库的技术,例如GridSearchCV。

谢谢

1 个答案:

答案 0 :(得分:0)

在Train验证测试中,对火车数据进行拟合的方法。

验证数据用于超参数调整。选择一组超参数,然后在训练集中训练模型。然后,将在验证集上评估此模型。重复此过程,直到用完所有不同超参数的排列。

最好的超参数集是在验证集上给出最佳结果的参数。这种方法称为网格搜索。

测试集用于评估具有最佳超参数的模型。这给出了最终的无偏精度和损失。 在验证或测试集上永远不会调用fit方法。

您的示例如下:

hyperListB=[]
hyperListL=[]

//let´s suppose both lists have the same dimensions
for hyperB in hyperListB:
    for hyperL in hyperListL:
        model=fit(train_set,hyperB,hyperL)
        values[].add(evaluate(model,validation_set)  //add scores of each run
     end for
end for
for i in range(0,values):
   plot_loss_functions(values)

select best set of hyperparameters

evaluate(model,test_set)