首页 > 解决方案 > Keras:拟合 DNN 会产生非零平均误差

问题描述

我正在训练一个非常简单的 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 平均误差,所以我猜它不依赖于优化器。此外,增加时期似乎会降低标准偏差,但不一定会降低平均误差。我可以知道我是否遗漏了任何重要的东西来减少平均误差吗?谢谢!

标签: keras

解决方案


推荐阅读