Keras - K.print не работает в функции потери - PullRequest
0 голосов
/ 11 апреля 2019

Я написал пользовательскую функцию потерь adjusted_r2. Я пытаюсь напечатать значения тензора внутри функции, но когда печатаются логи, я ничего не вижу. Может ли кто-нибудь помочь мне в этом.

def coeff_determination(y_true, y_pred):
    from keras import backend as K
    SS_res =  K.sum(K.square( y_true-y_pred ))
    SS_tot = K.sum(K.square( y_true - K.mean(y_true) ) )

    SS_res = K.print_tensor(SS_res, message='SS_res = ')
    SS_tot = K.print_tensor(SS_tot, message='SS_tot = ')

    r_squared = 1 - SS_res/(SS_tot + K.epsilon())

    r_squared = K.print_tensor(r_squared, message='r_squared = ')


    adj_r_squared = 1 -( (1-r_squared)*K.cast(K.shape(y_true)[0]-1,"float32")/K.cast((K.shape(y_true)[0]-n_features-1),"float32"))

    adj_r_squared = K.print_tensor(adj_r_squared, message='adj_r_squared = ')

    return -adj_r_squared

Журналы:

1/250 [..............................] - ETA: 51:44 - loss: -6.7060 - coeff_determination: -6.7060 - mean_squared_error: 40.5785

 2/250 [..............................] - ETA: 42:56 - loss: -7.2036 - coeff_determination: -7.2036 - mean_squared_error: 48.8251

 3/250 [..............................] - ETA: 41:30 - loss: -8.0279 - coeff_determination: -8.0279 - mean_squared_error: 48.1565

 4/250 [..............................] - ETA: 40:48 - loss: -9.1016 - coeff_determination: -9.1016 - mean_squared_error: 51.9965

1 Ответ

0 голосов
/ 11 апреля 2019

Функция K.print_tensor() работает при оценке тензоров (см. Документацию здесь ).Тензоры не инициализируются при вызове пользовательской функции потерь.Вот почему вы не можете оценить тензорные значения из функции потерь.Аргументами вашей пользовательской функции потерь являются тензоры, которые работают как заполнители, без фактических данных, прикрепленных к ним.

Та же проблема обсуждалась также в этом потоке .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...