我正在训练一个非常简单的DNN,但是我发现经过充分训练后,平均错误并不接近0:
def meanError(y_true, y_pred):
return K.mean(y_true - y_pred)
def stdError(y_true, y_pred):
return K.std(y_true - y_pred)
model = Sequential()
model.add(Dense(512, activation='tanh', input_shape=(numFeatures,)))
model.add(BatchNormalization())
model.add(Dropout(0.1))
model.add(Dense(1, activation='tanh'))
rmsp = optimizers.rmsprop(lr=0.0001)
model.compile(optimizer=rmsp,loss='mse', metrics=[meanError, stdError])
model.fit(cxTrain, yTrain, epochs = 10, batch_size = 1024, verbose=0)
score = model.evaluate(cxTrain, yTrain, verbose=0)
print(score)
这给我的平均误差为-4.177,标准偏差为6.589。在我的情况下,标准偏差非常好,但是我期望平均误差非常接近0。我将优化器更改为adam,我得到了-3.908的平均误差,因此我猜想它与优化器无关。同样,增加时期似乎可以减少标准偏差,但不一定可以降低平均误差。我可以知道是否缺少任何重要的东西来减少平均误差吗?谢谢!