Как получить неотрицательный вывод в lstm keras - PullRequest
0 голосов
/ 10 мая 2018

Я делаю прогноз для данных временных рядов, используя 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 голосов
/ 10 мая 2018

Ваш выходной слой имеет activation='linear', что означает, что вы используете обычную линейную функцию для вывода, и значения могут варьироваться от -∞ до + ∞.

enter image description here

Если у вас есть только два возможных выхода, попробуйте использовать сигмовидную функцию S (x) = 1 / (1 + e ^ -x).Эти значения находятся в диапазоне от 0 до 1.

Sigmoid Function

...