h2o autoencoders高错误(h2o.mse)

时间:2016-06-09 15:33:37

标签: r h2o

我正在尝试使用h2o使用其deeplearning函数创建自动编码器。我将一组大小为4000x50的数据提供给deeplearning函数(隐藏节点c(200)),然后使用h2o.mse检查它的错误,我得到的值约为0.4,这是一个相当高的值。

无论如何通过改变deeplearning函数来减少错误吗?

2 个答案:

答案 0 :(得分:0)

我假设一切都是默认值,除了用200个节点定义一个隐藏层?

您要尝试的第一组事项是:

  • 使用更多纪元(或使用不太积极的早期停止标准)
  • 使用第二个隐藏层
  • 在隐藏图层中使用更多节点
  • 获取更多培训数据

请注意,所有会增加您的培训时间。

答案 1 :(得分:0)

您可以使用H2OGridSearch来找到具有最小MSE的最佳自动编码器模型。 以下是Python中的示例。 Here您可以在R中找到示例。

def tuneAndTrain(hyperParameters, model, trainDataFrame):
    h2o.init()
    trainData=trainDataFrame.values        
    trainDataHex=h2o.H2OFrame(trainData)
    modelGrid = H2OGridSearch(model,hyper_params=hyperParameters)
    modelGrid.train(x=list(range(0,int(len(trainDataFrame.columns)))),training_frame=trainDataHex)
    gridperf1 = modelGrid.get_grid(sort_by='mse', decreasing=True)
    bestModel = gridperf1.models[0]
    return bestModel

您可以调用以上函数来查找和训练最佳模型:

hiddenOpt = [[50,50],[100,100], [5,5,5],[50,50,50]]
l2Opt = [1e-4,1e-2]
hyperParameters = {"hidden":hiddenOpt, "l2":l2Opt}
bestModel=tuneAndTrain(hyperParameters,H2OAutoEncoderEstimator(activation="Tanh", ignore_const_cols=False, epochs=200),dataFrameTrainPreprocessed)