Функция потери Keras out_dim> 1 - PullRequest
0 голосов
/ 03 ноября 2018

У меня есть данные тренировки:

enter image description here

И у меня есть модель в Керасе с более чем одним измерением. Я хочу предсказать A, B и C:

model = Sequential()
model.add(GRU(32, input_shape=(train_X.shape[1], train_X.shape[2])))
model.add(Dense(3))
model.compile(loss='mean_squared_error', optimizer='adam')

Но я хочу, чтобы минимум mean_squared_error в A, т. Е. Хотел бы рассматривать только A для функции потерь.

Что я могу сделать?

Ответы [ 2 ]

0 голосов
/ 03 ноября 2018

Что вам нужно посмотреть, так это пользовательская функция потерь:

def only_A_mean_squared(y_true, y_pred):
     return keras.losses.mean_squared_error(y_true[:,0], y_pred[:,0])

И чтобы его использовать:

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

То, что я делаю в вышеописанном, - это создание пользовательской функции потерь, которая берет только первое измерение («A») и передает его в нормальную керасную среднеквадратичную функцию потери ошибок.

0 голосов
/ 03 ноября 2018

Вы можете определить пользовательскую функцию потерь и рассчитать только потери mean_squared_error() на основе значения A:

from keras import losses

def loss_A(y_true, y_pred):
    return losses.mean_squared_error(y_true[:,0], y_pred[:,0])

#...
model.compile(loss=loss_A, optimizer='adam')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...