更新: 我想出了問題,但沒有解決方案。這是新Java版本的問題。我開始有這個問題,一旦我更新到最新的Java。h2o深度學習包使用自動編碼器輸出一個值
我一直在使用h2o和深度學習軟件包一段時間沒有問題。今天我再次使用它,但是當我從深度學習模型中提取特徵時,我一直在爲特定列中的所有行獲取相同的值。它以前工作正常。我嘗試使用不起作用的不同數據集。所以我猜測它是我的數據集(之前曾用過的),或者比這更深的東西。
這是我的代碼。任何幫助表示讚賞。
library(h2o)
localH20=h2o.init(nthreads = -1)
data=h2o.importFile(localH20, path="smsAllWords.csv", header=T)
model= h2o.deeplearning(x=1:107, training_frame = data, shuffle_training_data=TRUE, activation = "Tanh", hidden = c(100,75,50,25), epochs= 5,autoencoder = TRUE)
dl.data=h2o.deepfeatures(model,data,4)`
這是什麼樣的數據和輸出如下所示的樣品: 供參考:所述數據的變化是對於矩陣的其餘部分高。
data[1:10,1:10]
H2OFrame with 10 rows and 10 columns
a1 a2 a3 a4 a5 a6 a7 a8 a9 a10
1 -0.31289 -0.10442 -0.14504 -0.1143 -0.11115 -0.12753 -0.10413 -0.28192 -0.13307 -0.27609
2 -0.31289 -0.10442 -0.14504 -0.1143 -0.11115 -0.12753 -0.10413 2.13240 -0.13307 1.80440
3 -0.31289 -0.10442 -0.14504 -0.1143 -0.11115 -0.12753 6.59090 -0.28192 -0.13307 -0.27609
4 -0.31289 -0.10442 -0.14504 -0.1143 -0.11115 -0.12753 -0.10413 -0.28192 -0.13307 -0.27609
5 -0.31289 -0.10442 -0.14504 -0.1143 -0.11115 -0.12753 -0.10413 -0.28192 -0.13307 4.40510
6 -0.31289 -0.10442 -0.14504 -0.1143 -0.11115 -0.12753 -0.10413 -0.28192 -0.13307 -0.27609
7 -0.31289 -0.10442 -0.14504 -0.1143 -0.11115 -0.12753 -0.10413 -0.28192 -0.13307 -0.27609
8 -0.31289 -0.10442 -0.14504 -0.1143 -0.11115 -0.12753 -0.10413 -0.28192 -0.13307 -0.27609
9 -0.31289 -0.10442 -0.14504 -0.1143 -0.11115 -0.12753 -0.10413 -0.28192 -0.13307 -0.27609
10 -0.31289 8.16410 -0.14504 -0.1143 -0.11115 -0.12753 -0.10413 -0.28192 -0.13307 -0.27609
dl.data[1:10,1:10]
H2OFrame with 10 rows and 10 columns
DF.L4.C1 DF.L4.C2 DF.L4.C3 DF.L4.C4 DF.L4.C5 DF.L4.C6 DF.L4.C7 DF.L4.C8 DF.L4.C9 DF.L4.C10
1 -1 -1 1 -1 1 1 1 1 -1 -1
2 -1 -1 1 -1 1 1 1 1 -1 -1
3 -1 -1 1 -1 1 1 1 1 -1 -1
4 -1 -1 1 -1 1 1 1 1 -1 -1
5 -1 -1 1 -1 1 1 1 1 -1 -1
6 -1 -1 1 -1 1 1 1 1 -1 -1
7 -1 -1 1 -1 1 1 1 1 -1 -1
8 -1 -1 1 -1 1 1 1 1 -1 -1
9 -1 -1 1 -1 1 1 1 1 -1 -1
10 -1 -1 1 -1 1 1 1 1 -1 -1
編輯: 我跑同樣的數據集和一個不同的多次了,我會得到不同的結果。我根本沒有改變我的代碼,但有時它會起作用,有時它不會。我是否缺少一個可以控制這個的參數?
更新: 我也試過在不同的機器上設置相同的數據,它工作正常。所以我幾乎肯定這是另一臺機器的問題。我嘗試刪除R並刪除與之關聯的所有內容,然後重新安裝它,但這並沒有解決問題。
我做到了。同樣的問題。如果我多次運行相同的數據集,我會得到不同的結果。我根本沒有改變我的代碼,但有時它會起作用,有時它不會。我是否缺少一個可以控制這個的參數? – nasser
H2O Deep Learning不可重現,除非您設置reproducible = TRUE和seed = 1234(或任何整數)。在這種情況下,它以單線程模式運行,並且速度較慢,但每次都會產生相同的模型。 您的模型沒有提供一致的結果這一事實意味着參數不好。如果你需要一個深度網絡,你可以嘗試一個堆棧自動編碼器:https://github.com/h2oai/h2o-3/blob/master/h2o-r/tests/testdir_algos/deeplearning/runit_deeplearning_stacked_autoencoder_large.R或看看MSE在訓練數據上確認它隨着時間的推移實際上變得更好。 –
是否與深度學習函數中的autoencoder參數不同?從技術上講,如果你有多個隱藏層,這也是堆疊的。 我也試過在不同的機器上設置相同的數據,它工作正常。所以我幾乎肯定這是另一臺機器的問題。我嘗試刪除R並刪除與之關聯的所有內容,然後重新安裝它,但這並沒有解決問題。 – nasser