2017-01-27 3 views
1

Я новичок в H2O, и я пытаюсь использовать его в качестве первоначального теста для обучения нейронной сети для интерполяции функции. Я пытаюсь с несколькими, но никто не работает !!! Я получаю NN, который не соответствует учебному набору. Я также попытался перемасштабировать данные (не прилагается для простоты), но он не меняется. Вот мой код:Невозможно использовать H2O для интерполяции функции

x<- seq(-50, 50, by=0.01) 
y1<- x 
f1<-data.frame(x, y1) 
f1.hex<-as.h2o(f1) 
random.vec <- h2o.runif(f1.hex) 
train <- f1.hex[random.vec < 0.6, ] 
valid <- f1.hex[(random.vec > 0.6) && (random.vec < 0.8),] 
test <- f1.hex[random.vec > 0.8, ] 


    m1 <- h2o.deeplearning(
    training_frame=train, 
    validation_frame=valid, 
    x=1, 
    y=2, 
    activation="RectifierWithDropout", ## default 
    hidden=c(25,25),    
    epochs=100, 
    input_dropout_ratio = 0, 
    hidden_dropout_ratios = c(0.5, 0.5), 
    stopping_rounds = 5, 
    stopping_metric = "AUTO", 
    stopping_tolerance = 0.001 
) 

plot(m1, timestep = "duration", metric = "deviance") 
summary(m1) 
pred <- h2o.predict(m1, f1.hex[,1]) 
pred.r<- as.data.frame(pred) 

я получаю неправильный predicition с огромной девиацией ... Альтро пытался cheange эпох и другие параметров ... Где я ошибаюсь? Спасибо

ответ

0

У меня такие же ужасные результаты. Легким решением было прекратить использование отсева. Таким образом, мой код стал следующим:

m2 <- h2o.deeplearning(
training_frame=train, 
validation_frame=valid, 
x=1, 
y=2, 
activation="Rectifier", 
hidden=c(25,25),    
epochs=100 
) 

Это не дает идеальных результатов, но намного лучше.

Почему? Выпадения - это способ обработки шумовых данных. Ваши данные - полярная противоположность шумным. Если вы используете отсева, вам обычно приходится давать больше скрытых узлов и больше эпох, чтобы компенсировать.

Возвращаясь к вашей линейной функции, H2O выполняла только два турнира, один из которых в 10 эпох, один в 100 эпох. Поэтому, любопытно посмотреть, как помогли эпохи, я взял ручное управление, когда происходит подсчет очков: через каждые 5 эпох. (Я не рекомендую это для реальной работы, но ноги шины Его с искусственными наборами данных, как это, может быть поучительно.)

m3 <- h2o.deeplearning(
training_frame=train, 
validation_frame=valid, 
x=1, 
y=2, 
activation="Rectifier", 
hidden=c(25,25),    
epochs=500, 
train_samples_per_iteration = 50005, score_each_iteration=TRUE 
) 

История скоринга график (от потока), то выглядит следующим образом:

enter image description here

Ранняя остановка началась в 143 эпохи.

 Смежные вопросы

  • Нет связанных вопросов^_^