2

更新:我发现了问题,但没有找到解决方案。这是新Java版本的问题。一旦我更新到最新的 Java,我就开始遇到这个问题。

我一直在使用 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 并删除与之相关的所有内容,然后重新安装它,但这并没有解决问题。

4

1 回答 1

1

如果它以前在相同版本的 H2O 上工作,那么它一定是一个收敛问题(找到错误的局部最小值)。hidden = c(100,75,50,25)您可以尝试从to减少隐藏层的数量,hidden=c(50)看看是否可行。否则,几乎可以肯定是数据问题。

于 2015-10-26T06:54:50.213 回答