Piszę niestandardowy cel, aby wyszkolić Keras (z modelem backend tensorflow), ale muszę debugować niektóre obliczenia pośrednie. Dla uproszczenia załóżmy, że mam:Debugowania keras warstwa pośrednia lub zmienne obiektywne z tensorflow
def custom_loss(y_pred, y_true):
diff = y_pred - y_true
return K.square(diff)
nie mogłem znaleźć łatwy sposób na dostęp, na przykład, zmienna pośrednia diff lub jej kształt podczas treningu. W tym prostym przykładzie wiem, że mogę zwrócić diff, aby wydrukować jego wartości, ale moja rzeczywista strata jest bardziej złożona i nie mogę zwrócić wartości pośrednich bez kompilacji błędów.
Czy istnieje prosty sposób na debugowanie zmiennych pośrednich w Keras?
Aby dodać do @nemo, Keras ma te funkcje drukowania backendu rozszerzone na keras przez 'K.print_tensor()' https://github.com/fchollet/keras/blob/master/keras/backend/theano_backend.py# L934 i https://github.com/fchollet/keras/blob/master/keras/backend/tensorflow_backend.py#L1896. Nie próbowałem używać funkcji 'print_tensor()', ale jak @nemo zauważyłem, musisz użyć jej z warstwą 'Lambda' – indraforyou
O tak, zapomniałem, że to istnieje. Ale to nie pomaga, jeśli chcesz czegoś innego niż kompletna reprezentacja tensora, np. kształt. – nemo
Dzięki, ale zarówno tf.Print, jak i K.print_tensor nie wydają się niczego drukować samodzielnie i jeśli zawijam je stdoutowym drukiem Pythona, tj. Print (tf.Print (diff, [tf.shape (diff)])) jest wykonywany tylko raz podczas fazy kompilacji modelu, a nie podczas fazy uruchamiania (podczas treningu). – gcswoosh