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エポック時の2つのスコアリングイベントしか行いませんでした。だから、エポックがどのように役立つのか興味があったので、ここでは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 
) 

(フローから)のスコア履歴チャートは、その後、次のようになります。

enter image description here

早期停止は143エポックで開始されました。

関連する問題