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

Я пишу просто простую функцию потерь, в которой мне нужно преобразовать тензор в массив numpy (это важно).Я просто пытаюсь напечатать значение тензора, но получаю эту ошибку: -

Тензор ("loss / активации_4_loss / Print: 0", shape = (?, 224, 224, 2), dtype = float32)

def Lc(y_true, y_pred):
    x=K.print_tensor(y_pred)
    print(x)
    return K.mean(y_pred)

Пожалуйста, скажите мне, как я могу получить значение (цифры) от тензора?Я также попробовал "eval", но он также выдал большую жирную ошибку о том, что сеанса нет, он заполнитель и т. Д. Вся программа работает нормально, просто строка " print_tensor " вызывает проблемы.

1 Ответ

0 голосов
/ 06 марта 2019

Оператор печати избыточен. print_tensor уже напечатает значения.

Из документации print_tensor:

"Обратите внимание, что print_tensor возвращает новый тензор, идентичный x , который следует использовать в следующем коде. В противном случае операция печати не учитывается при оценке . "

В приведенном выше коде, поскольку y_pred был назначен для x, а x больше не использовался, печать не удалась.

Используйте версию ниже.

def Lc(y_true, y_pred):
    y_pred=K.print_tensor(y_pred)
    return K.mean(y_pred)

def cat_loss(y_true, y_pred):
    y_pred = K.print_tensor(y_pred)
    return K.categorical_crossentropy(y_true, y_pred)

После того, как я поместил эту функцию cat_loss в свой цикл обучения, я могу видеть вывод следующим образом:

[[0,000191014129 0,230871275 0,43813318] ...]

190/255 [=====================> ........] - ETA: 0 с - потеря: 0,3442 - согласно: 0,9015

[[3.16367514e-05 1.70419597e-07 0.000147014405] ...]

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