h2o深度学习每次运行的不同结果

时间:2017-11-04 02:47:14

标签: deep-learning h2o

我在2个平衡类的数据上使用python进行h2o深度学习" 0"和" 1",并将参数调整为如下:

prostate_dl = H2ODeepLearningEstimator(
     activation=,"Tanh"
     hidden=[50,50,50],
     distribution="multinomial",
    score_interval=10,
    epochs=1000,
    input_dropout_ratio=0.2
    ,adaptive_rate=True
    , rho=0.998, epsilon = 1e-8
    )

prostate_dl .train( 
x=x,
y=y,
training_frame =train,
validation_frame = test) 

每次程序运行都会给出不同的混淆矩阵和精确度的结果,无论如何可以解释一下?结果如何可靠?

此外,所有的运行都将多数预测作为类" 1"不是" 0" ,他们有什么建议吗?

1 个答案:

答案 0 :(得分:1)

此问题已得到解答here,但您需要在初始化Python中的reproducible=TRUE(或R中的H2ODeepLearningEstimator)时设置h2o.deeplearning()

即使在设置reproducible=TRUE之后,H2O深度学习结果仅在使用单核时才可重现;换言之,h2o.init(nthreads = 1)时。其背后的原因概述为here

另外,根据H2O深度学习user guide

  

每个Mapper任务是否在一个单独的神经网络模型上工作,该模型在缩减期间组合在一起,或者每个Mapper是否操纵一个跨节点持久的共享对象?

     

既不;每个计算节点有一个模型,所以多个   映射器/线程共享一个模型,这就是H2O不可重现的原因   除非使用小数据集且force_load_balance = F或   reproducible = T,有效地重新平衡到一个块和   导致只有一个线程来启动map()。目前的行为是   简单模型平均;通过“弹性”进行节点间模型平均   平均“目前正在进行中。