2017-08-09 15 views
1

私は最後の2週間を自分のNNで苦労して過ごしました。目的はケラスのパフォーマンスが悪い(損失と最適化機能?)

  • いくつかの数値変数(緯度・経度)
  • カテゴリ変数(数値的にエンコードされた)(一日の時間、曜日など)
  • に基づいてタクシーコースの旅行期間を予測することですここで

は、私はまた、NUため2つの異なるモデルをマージしようとした最もシンプルなバージョン

X_train = trainData.as_matrix(columns=["fareDistance","hour","day","pickup_longitude","pickup_latitude","dropoff_longitude","dropoff_latitude"])  
Y_train = np.array(trainData["trip_duration"]) 
model = Sequential() 
model.add(Dense(32, input_dim=7, activation='linear')) 
model.add(Dense(12, activation='linear')) 
model.add(Dense(1, activation='linear')) 
model.compile(loss='mean_absolute_percentage_error', optimizer='adagrad', metrics=['accuracy']) 
model.summary() 
model.fit(X_train, Y_train, epochs=10, validation_split=0.2) 

です一方ではメリカル変数、もう一方ではカテゴリカルであるが、それは事を変えなかった。 損失と最適化機能の組み合わせによっては、損失と正確さが全く同じ(acc。0.0016)のままであるか、または非ゼロのaccもありません。

私の友人は、純粋なTensorFlowにNNを複製し、その結果

Train on 233383 samples, validate on 58346 samples 
Epoch 1/20 233383/233383 [==============================] - 15s - loss: 45.9550 - acc: 0.0016 - val_loss: 46.2514 - val_acc: 0.0014 
Epoch 2/20 233383/233383 [==============================] - 15s - loss: 45.8675 - acc: 0.0014 - val_loss: 46.2675 - val_acc: 0.0015 
Epoch 3/20 233383/233383 [==============================] - 15s - loss: 45.8465 - acc: 0.0015 - val_loss: 46.2131 - val_acc: 0.0013 
Epoch 4/20 233383/233383 [==============================] - 15s - loss: 45.8283 - acc: 0.0014 - val_loss: 46.2478 - val_acc: 0.0016 
Epoch 5/20 233383/233383 [==============================] - 15s - loss: 45.8214 - acc: 0.0015 - val_loss: 46.2043 - val_acc: 0.0013 
Epoch 6/20 233383/233383 [==============================] - 14s - loss: 45.8122 - acc: 0.0014 - val_loss: 46.2526 - val_acc: 0.0014 
Epoch 7/20 233383/233383 [==============================] - 12s - loss: 45.7990 - acc: 0.0015 - val_loss: 46.1821 - val_acc: 0.0014 
Epoch 8/20 233383/233383 [==============================] - 12s - loss: 45.7964 - acc: 0.0016 - val_loss: 46.1761 - val_acc: 0.0013 
Epoch 9/20 233383/233383 [==============================] - 11s - loss: 45.7898 - acc: 0.0015 - val_loss: 46.1804 - val_acc: 0.0016 

の同じ種類を持って、私は何かが足りない - 明らかに何か大きな、のような - 任意の試みはアクティベーションを変更する理由を説明するだろう、損失や最適化の機能が同じことを終了しますか?事前 D.

+0

これは純粋な機械学習の質問です。あなたは正しいフォーラムにいません。ここに質問を投稿してください:https://datascience.stackexchange.com/ – ma3oun

答えて

1

おかげで、これを試してみてください。

X_train = trainData.as_matrix(columns=["fareDistance","hour","day","pickup_longitude","pickup_latitude","dropoff_longitude","dropoff_latitude"])  
Y_train = np.array(trainData["trip_duration"]) 
model = Sequential() 
model.add(Dense(32, input_dim=7, activation='elu')) 
model.add(Dense(12, activation='elu')) 
model.add(Dense(1, kernel_initializer='normal')) 
model.compile(loss='mean_absolute_percentage_error', optimizer='rmsprop') 
model.summary() 
model.fit(X_train, Y_train, epochs=10, validation_split=0.2) 

あなたはまた、アダム・オプティマイザを試すことができます。

model.compile(loss='mean_absolute_percentage_error', optimizer='adam') 

更新:

  • 上記のコードは、あなたの入力データが正規化されたか、非常に汚れていないかを意味助けにはならなかった場合。
+1

Thanks Paddy。私はunfortunatlyと同じ問題を得る –

+0

あなたはデータを正規化しましたか? – Paddy

+0

問題があるようです。私はあなたの投稿を続けます。ありがとう –

関連する問題