首页 文章

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

提问于
浏览
0

我在2个 balancer 类“0”和“1”的数据上使用python进行h2o深度学习,并调整参数如下:

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

    这个问题已经回答了here,但是你需要在Python中初始化 H2ODeepLearningEstimator 时设置 reproducible=TRUE (或者在R中的 h2o.deeplearning() 中) .

    即使在设置 reproducible=TRUE 之后,H2O深度学习结果仅在使用单个核心时可重现;换句话说,当 h2o.init(nthreads = 1) . 背后的原因概述了here .

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

    每个Mapper任务是否在减少期间组合的单独神经网络模型上工作,或者每个Mapper操作一个跨节点持久的共享对象?无论;每个计算节点有一个模型,因此多个Mapper /线程共享一个模型,这就是为什么H2O不可重复,除非使用一个小数据集而force_load_balance = F或reproducible = T,这有效地重新 balancer 到一个块并导致只有一个线程来启动一个map() . 目前的行为是简单的模型平均;目前正在通过“弹性平均”进行节点间模型平均 .

相关问题