如何在lstm keras中获得非负输出

时间:2018-05-10 13:53:19

标签: keras lstm data-science

我正在使用lstm keras对时间序列数据进行预测。火车不包含任何负数。

问题是,当训练误差降低到一定水平时,输出的预测有时是负的,这在我的应用中没有意义。

以下是我的RNN:

model.add(LSTM(100,return_sequences=True,stateful=False,activation='relu', input_shape=(1, look_back)))
model.add(Dropout(0.1))
model.add(Flatten())
model.add(Dense(50, activation='relu'))
model.add(Dense(1, activation='linear', W_constraint=nonneg()))
model.compile(loss='mean_absolute_error', optimizer= 'adam')     
model.fit(trainX, trainY, epochs=100, validation_split = 0.20, batch_size=1, verbose=0)

这主要发生在列车数据有很多零时。我怎么能阻止这个。

1 个答案:

答案 0 :(得分:0)

您的输出图层有activation='linear',这意味着您对输出使用了正常的线性函数,值的范围可以从-∞到+∞。

enter image description here

如果您只有两个可能的输出,请尝试使用sigmoid函数S(x)= 1 /(1 + e ^ -x)。这些值的范围仅为0到1.

Sigmoid Function