小编Joe*_*e_P的帖子

如何使用 Keras (tensorflow) 限制神经网络回归中预测输出的总和

我正在 keras (python, backend: tensorflow) 中训练一个神经网络作为回归。因此,我的输出层不包含激活函数,我使用均方误差作为我的损失函数。

我的问题是:我想确保所有输出估计的总和(几乎)等于所有实际标签的总和。

我的意思是:我想确保不仅 (y_real)^i ~ (y_predict)^i 对于每个训练示例 i,而且还保证 sum(y_real) = sum(y_predict),对所有 i 求和。常规线性回归使添加此限制变得足够简单,但我没有看到神经网络有任何类似的东西。我可以将最终结果乘以 sum(y_real) / sum(y_predict),但如果我不想损害个人预测,恐怕这不是理想的方法。

我还有什么其他选择?

(我无法共享我的数据,也无法使用不同的数据轻松重现该问题,但这是按要求使用的代码:)

from keras.models import Sequential
from keras.layers import Dense

model = Sequential()
model.add(Dense(128, activation = 'relu', input_dim = 459))
model.add(Dense(32, activation = 'relu'))
model.add(Dense(1))

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

model.fit(X_train, Y_train, epochs = 5, validation_data = (X_val, 
Y_val), batch_size = 128)
Run Code Online (Sandbox Code Playgroud)

regression machine-learning neural-network keras

4
推荐指数
1
解决办法
2749
查看次数