2017-11-04 116 views
0

我使用使用python的H 2 O深學習上的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」,他們的任何建議?

+0

請移動「另外,所有的運行給出多數預測作爲類」1「而不是」0「,是他們的任何建議?到一個單獨的問題(並提供一個可重複的例子)。 –

回答

0

這個問題已經回答了here,但你需要設置reproducible=TRUE在初始化(在讀或h2o.deeplearning())在Python中H2ODeepLearningEstimator

即使在設置reproducible=TRUE之後,H2O深度學習結果僅在使用單個核心時纔可重現;換句話說,當h2o.init(nthreads = 1)。背後的原因概述如下:here

而且,每H2O深度學習user guide

是否對被還原過程中結合的單獨神經網絡模型中的每個映射任務的工作,或者是每一個映射器操作的共享對象是跨節點的執着?

兩者都不;每個計算節點只有一個模型,因此多個映射器/線程共享一個模型,這就是爲什麼H2O不可重現的原因 除非使用小數據集,並且force_load_balance = F或 reproducible = T,可有效地重新平衡到單個塊,並且 導致只有一個線程啓動地圖()。目前的行爲是 簡單模型平均;目前正在進行通過「Elastic 平均」的節點間模型平均。

+0

謝謝。是的,當我設置reproducible = TRUE和seed = 1時,它工作。 – user8883441

+0

任何人都可以建議我怎麼讓結果不偏向某個班級,儘管這兩個班級在訓練階段是平衡的? – user8883441

相關問題