无法使用H2O插入函数

时间:2017-01-27 14:15:23

标签: r h2o

我是H2O的新手,我正在尝试使用它作为初始测试来训练神经网络以插入函数。 我正在尝试几个,但没有人工作! 我得到的NN与训练集不匹配。我也尝试通过重新调整数据(为简单起见,此处未附加),但它没有改变。 这是我的代码:

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)

我得到一个错误的预测与巨大的偏差...... Altro试图破坏时代和其他参数...... 我哪里错了? 感谢

1 个答案:

答案 0 :(得分: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个时代之后。 (对于实际工作,我建议不要这样做,但是为了用这样的人工数据集来踢H2O的轮胎,它可以是教育性的。)

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
)

得分历史图表(来自Flow)看起来像:

enter image description here

早期停止在143个时期开始。