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

Deep learning h2o深度学习每次运行的不同结果,deep-learning,h2o,Deep Learning,H2o,我使用python对2个平衡类“0”和“1”的数据进行h2o深度学习,并将参数调整如下: prostate_dl = H2ODeepLearningEstimator( activation=,"Tanh" hidden=[50,50,50], distribution="multinomial", score_interval=10, epochs=1000, input_dropout_ratio=0.2 ,adaptive_ra

我使用python对2个平衡类“0”和“1”的数据进行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”,他们有什么建议吗?

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

即使设置了
repeatable=TRUE
,H2O深度学习结果也只能在使用单个核心时再现;换句话说,当
h2o.init(nthreads=1)
时。本文概述了这背后的原因

此外,根据H2O深度学习:

是否每个映射器任务都在一个单独的神经网络模型上工作,该模型在还原过程中被合并,或者每个映射器都在操作一个跨节点持久化的共享对象?

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


请将“另外,所有的运行都将大多数预测作为“1”类而不是“0”,他们是否有任何建议?”移至一个单独的问题(并提供一个可复制的示例)。谢谢。是的,当我设置repeatable=TRUE和seed=1时,它就起作用了。尽管这两个类在培训阶段是平衡的,但有人能建议我如何让结果不偏向某一类吗?