2015-10-22 1 views
2

ОБНОВЛЕНИЕ: Я выяснил проблему, но не решение. Это проблема с новой версией Java. У меня возникла эта проблема. Как только я обновился до последней Java.h2o пакет глубокого обучения выводит одно значение при использовании автоопределения

Я использую h2o и пакет глубокого обучения на некоторое время без проблем. Сегодня я использовал его снова, но я все равно получаю то же значение для всех строк в определенном столбце, когда я извлекаю функции из модели deeplearning. Раньше он работал нормально. Я пытался использовать разные наборы данных, которые не работали. поэтому я предполагаю, что это либо мой набор данных (который раньше работал), либо что-то более глубокое.

Это мой код. Любая помощь приветствуется.

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)` 

это пример того, что данные и вывод выглядит следующим образом: FYI: изменение данных выше для остальной части матрицы.

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 и удалить все, что с ним связано, а затем переустановить его, но это не решило проблему.

ответ

1

Если он работал раньше в той же версии H2O, то это должна быть проблема конвергенции (обнаружен плохой локальный минимум). Вы можете попытаться уменьшить количество скрытых слоев от hidden = c(100,75,50,25) до hidden=c(50) и посмотреть, работает ли это. В противном случае это почти наверняка проблема с данными.

+0

я сделал. та же проблема. если я буду использовать один и тот же набор данных несколько раз, я получу разные результаты. Я вообще не меняю свой код, но иногда он будет работать, иногда он не будет. У меня отсутствует параметр, который может контролировать это? – nasser

+0

H2O Deep Learning не воспроизводится, если вы не установите воспроизводимый = TRUE и seed = 1234 (или любое целое число). В этом случае он работает в однопоточном режиме и намного медленнее, но каждый раз будет работать одна и та же модель. Тот факт, что ваша модель не дает согласованных результатов, означает, что параметры не очень хорошие. Если вам нужна глубокая сеть, вы можете попробовать сложный автокодер: https://github.com/h2oai/h2o-3/blob/master/h2o-r/tests/testdir_algos/deeplearning/runit_deeplearning_stacked_autoencoder_large.R или посмотреть MSE на данные обучения, чтобы подтвердить, что со временем это становится лучше. –

+0

отличается от параметра autoencoder в функции deeplearning? технически это также сложено, если у вас несколько скрытых слоев. Я также попробовал тот же набор данных на другой машине, и он работал правильно. Поэтому я почти уверен, что это проблема с другой машиной. Я попытался удалить R и удалить все, что с ним связано, а затем переустановить его, но это не решило проблему. – nasser