2017-08-09 42 views
1

我已經花了最近2周與我的神經網絡掙扎。其目的是預測的基於幾個Keras糟糕的表現(丟失和優化功能?)

  • 數值變量(緯度和經度)
  • 分類變量(數字編碼)(一天中的小時,星期幾等)
  • 出租車課程行程的持續時間

這是最簡單的版本

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) 

我也試圖合併兩種不同的型號NU一方面是合乎邏輯的變量,另一方面是明確的,但它並沒有改變一件事情。根據損失和優化功能的組合,損失和精度保持完全相同(按照0.0016)或者我甚至沒有非空符合。

我的一個朋友複製的NN純TensorFlow並得到了相同樣的結果

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

謝謝帕迪。我得到同樣的問題,不幸 –

+0

你是否正常化數據? – Paddy

+0

似乎可能是問題所在。我會及時向大家發佈。謝謝 –