Keras imprime dentro de la función de pérdida no funciona

Estoy tratando de crear una función de pérdida en keras (Tensorflow Backend) pero estoy un poco atascado para verificar el interior de la función de pérdida personalizada. De hecho, la impresión aparece en la consola solo cuando compilo el modelo, después de eso no hay impresión. (Solo estoy probando una función personalizada muy simple, crearé la verdadera función cuando resolví este problema). Entreno el modelo usando la función train_on_batch. Como puedó resolver esté problema ?

def loss_yolo(self, y_true, y_pred): ''' 4*7*7 = 196 1*7*7 = 49 7*7*20 = 980 ''' print('inside loss function') loss = K.mean(y_true- y_pred) return loss model.compile(optimizer='sgd', loss=loss_yolo) print('train on batch') print(model.train_on_batch(x, y)) 

mi salida:

función de pérdida interna

entrenar en lote

-0.481604

Lo único que puede hacer es no usar la función de impresión de python, sino, por ejemplo, la función tf.Print de tensorflow que forma parte del gráfico computacional. La documentación dice que la operación no hace nada, pero cada vez que se evalúa, imprime un mensaje que puede especificar.

Solo debes tener cuidado de colocarlo correctamente en el gráfico, algo como:

 def loss(y_true, y_pred): d = y_true - y_pred d = tf.Print(d, [d], "Inside loss function") return tf.reduce_mean(tf.square(d)) 

Una mejor opción para mirar dentro de lo que está pasando internamente es usar el depurador tensorflow .