У меня проблемы с отладкой пользовательской функции потерь в керасе.
def custom_loss_wrapper(input_tensor):
def custom_loss(y_true, y_pred):
diff = y_pred - y_true
diff = kb.print_tensor(diff)
print(input_tensor)
return kb.square(diff)
return custom_loss
model.compile(optimizer='adam',loss=custom_loss_wrapper(model.input))
model.fit(x=training_set,y=target_set,epochs=100)
Выход:
Тензор ("lstm_29_input: 0", форма = (?, 1, 5), dtype = float32)
Эпоха 1/100 61550 / 61550 [==============================] - 13 с 217 мс / шаг - потеря: 0,0049
и c .
В частности, я не могу печатать какие-либо работы, пока модель тренируется. Я попробовал tf.Print и Theano Print, но безрезультатно. Когда я пытаюсь с обычным шрифтом, он печатается только один раз (когда он скомпилирован, я предполагаю). Кроме того, я попытался получить доступ к значениям input_tensor (здесь я пытался использовать различные методы, такие как kb.eval, преобразование в массив NumPy, et c.), И кажется, что мой input_tensor является только тензором-заполнителем. Это опять же, не содержит никакого значения, потому что custom_loss выполняется во время компиляции, которую я предполагаю. Как мне получить доступ к input_tensor во время выполнения?