2017-08-09 1 views
1

Ich habe die letzten 2 Wochen mit meinem NN kämpfen. Ziel ist es Reise Dauer der Taxi Kurse basiert auf mehrerenKeras schlechte Leistung (Verlust-und Optimierungsfunktionen?)

  • numerischen Variablen (Breiten- und Längengrade)
  • kategorische Variablen (numerisch codiert) (Stunde des Tages, Tag der Woche, etc.)
  • vorherzusagen

Hier ist die einfachste Version

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) 

ich habe auch versucht zwei verschiedene Modelle für nu zu fusionieren merische Variablen auf der einen Seite und kategorische auf der anderen Seite, aber es hat nichts geändert. Je nach Kombination von Verlust- und Optimierungsfunktion bleibt entweder der Verlust und die Genauigkeit ziemlich gleich (nach 0.0016) oder ich habe nicht einmal nicht null acc.

Ein Freund von mir das NN in reinen TensorFlow repliziert und bekam die gleiche Art von Ergebnissen

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 

ich etwas fehle - wie etwas groß, offensichtlich - was erklären würde, warum jeder Versuch Aktivierung zu ändern , Verlust- oder Optimierungsfunktion endet dasselbe?

Vielen Dank im Voraus D.

+0

Dies ist eine reine Lernfrage. Du bist nicht im richtigen Forum. Bitte stellen Sie Ihre Frage hier: https://datascience.stackexchange.com/ – ma3oun

Antwort

1

versuchen Sie dies:

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) 

Sie auch adam Optimierer versuchen.

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

Update:

  • Wenn der Code oben haben Sie Ihre Dateneingabe entweder nicht normalisiert oder stark verschmutzt nicht helfen bedeutet.
+1

Danke Paddy. Ich bekomme das gleiche Problem mit beiden leider –

+0

haben Sie die Daten normalisiert? – Paddy

+0

Scheint so, als ob es das Problem sein könnte. Ich werde Sie auf dem Laufenden halten. Vielen Dank –