keras - 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 平均误差,所以我猜它不依赖于优化器。此外,增加时期似乎会降低标准偏差,但不一定会降低平均误差。我可以知道我是否遗漏了任何重要的东西来减少平均误差吗?谢谢!
解决方案
推荐阅读
- c++ - LLVM comparing between a pointer and a constant
- python - 是否有生成暴雪 API 访问令牌的 python 脚本?
- reliability - 使用 RandomVector 的子集时,OpenTURNS 可靠性模型的结果非常不准确
- python - Python中有没有办法在熊猫时间序列中标记中国假期
- javascript - 使用 DOMParser 从字符串中解析 HTML 并返回对象数组
- bash - bash 中的多个列表和多个文件类型
- security - 访问 R 包的标准?
- javascript - Javascript计时器倒计时
- javascript - 控制台日志颜色含义
- java - 使用 Spring JDBC,将枚举转换为自定义值的正确方法是什么?