Я тренирую модель автоэнкодера 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. Это ошибка выбранной мной функции потерь? И если да, какую другую функцию потерь я должен выбрать? Или я должен по-разному масштабировать свои данные?