Пользовательская функция потерь на Keras - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть набор данных, содержащий матрицу признаков X и матрицу меток y размера N, где каждый элемент y_i принадлежит [0,1]. У меня есть следующая функция потери

, где g(.) - это функция, которая зависит от матрицы ввода X. Я знаю, что пользовательская функция потерь Keras должна иметь вид customLoss(y_true,y_predicted), однако у меня возникают трудности при включении термина g(X) в функции потерь, поскольку это зависит от входной матрицы.

1 Ответ

1 голос
/ 01 ноября 2019

В общем, вы можете передать пользовательскую функцию потери на Keras. Пока вы определяете свою функцию потерь, вы можете использовать только математические операции, доступные в бэкэнде Keras.

import keras.backend as K

def g(x):
    # function definition here
    # g(x)
    return output

def main_loss(input_data):
    def custom_loss(y_true, y_pred):
      # function definition
      return K.sum(K.log(1+K.square(y_true)*g(input_data)))
    return custom_loss 


# In the main script

model.compile(optimizer=adam, loss=custom_loss)
...