2017-08-09 66 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

似乎可能是问题所在。我会及时向大家发布。谢谢 –