Я пишу пользовательскую задачу для обучения модели Keras (с тензорным потоком), но мне нужно отлаживать некоторые промежуточные вычисления. Для простоты предположим, что у меня есть:Отладка промежуточного слоя или объектных переменных keras с тензорным потоком
def custom_loss(y_pred, y_true):
diff = y_pred - y_true
return K.square(diff)
Я не мог найти простой способ доступа, например, промежуточная переменная дифф или его форма во время тренировки. В этом простом примере я знаю, что я могу вернуть diff для печати своих значений, но мои фактические потери сложнее, и я не могу вернуть промежуточные значения, не получая компиляцию ошибок.
Есть ли простой способ отладки промежуточных переменных в Keras?
Чтобы добавить к @nemo, Keras имеет эти функции бэкэнд-печати, расширенные в keras через 'K.print_tensor()' https://github.com/fchollet/keras/blob/master/keras/backend/theano_backend.py# L934 & https://github.com/fchollet/keras/blob/master/keras/backend/tensorflow_backend.py#L1896. Я не пробовал использовать функцию print_tensor() ', но как @nemo отметил, что вы должны использовать его с слоем« Lambda » – indraforyou
О да, забыл, что это существовало. Но это не поможет вам, если вы хотите нечто иное, чем полное строковое представление тензора, например. форма. – nemo
Спасибо, но оба tf.Print и K.print_tensor, кажется, ничего не печатают сами по себе, и если я их обертываю печатью python stdout, то есть print (tf.Print (diff, [tf.shape (diff)])) он выполняется только один раз во время фазы компиляции модели, а не во время фазы запуска (во время обучения) – gcswoosh