Модель прогнозирует отрицательные значения в виде нулей - PullRequest
1 голос
/ 22 марта 2020

Я тренирую модель автоэнкодера keras со следующей структурой:

model = Sequential()
model.add(Dense(128, activation='relu', input_shape=(MAX_CONTEXTS, 3)))
model.add(Dense(64, activation='relu'))
model.add(Dense(32, activation='relu'))
model.add(Dense(64, activation='relu'))
model.add(Dense(128, activation='relu'))
model.add(Dense(3, activation='relu'))
model.compile(optimizer='adam', loss='mse', metrics=['accuracy'])

Мои данные имеют форму (number_of_samples, 430, 3) и содержат значения из [-1.9236537371711413, 1.9242677998256246]. Эти данные уже нормализованы. Затем я тренирую эту модель:

history = model.fit(X, X, epochs=15, batch_size=2, verbose=1, shuffle=True, validation_split=0.2)

и получаю точность 95,03% (подозрительно высокая, но моя проблема сейчас в другом). Теперь, когда я прогнозирую выборку своих данных, положительные значения относительно хороши, близки к тому, что они находятся на входе, но все отрицательные значения округляются до 0. Это ошибка выбранной мной функции потерь? И если да, какую другую функцию потерь я должен выбрать? Или я должен по-разному масштабировать свои данные?

1 Ответ

1 голос
/ 22 марта 2020

Это потому, что вы применяете relu активацию на выходном слое.

...