Как отладить керас в tenorflow 2.0? - PullRequest
3 голосов
/ 15 апреля 2019

На самом деле, я нахожу проблему уже в tenorflow 1.13.0. (tensflow1.12.0 работает хорошо).

Мой код указан в качестве простого примера:

def Lambda layer(temp):
    print(temp)
    return temp

, который используется как лямбда-слой в моей модели keras. В tenorflow1.12.0 print(temp) может выводить подробные данные, например, следующие:

[<tf.Tensor: id=250, shape=(1024, 2, 32), dtype=complex64, numpy=
array([[[ 7.68014073e-01+0.95353246j,  7.01403618e-01+0.64385843j,
          8.30483198e-01+1.0340731j , ..., -8.88018191e-01+0.4751519j ,
         -1.20197642e+00+0.6313924j , -1.03787208e+00+0.22964947j],
        [-7.94382274e-01+0.56390345j, -4.73938555e-01+0.55901265j,
         -8.73749971e-01+0.67095983j, ..., -5.81580341e-01-0.91620034j,
         -7.04443693e-01-1.2709806j , -3.23135853e-01-1.0887597j ]],

Это потому, что я использую 1024 в качестве batch_size. Но когда я обновляюсь до tenorflow1.13.0 или тензор потока 2.0, те же коды выводят

Tensor("lambda_1/truediv:0", shape=(None, 1), dtype=float32)

Это ужасно, так как я не могу знать точных ошибок. Итак, есть идеи о том, как это решить? Заранее большое спасибо.

1 Ответ

2 голосов
/ 15 апреля 2019

Вы видите этот вывод, потому что модель Keras конвертируется в графическое представление, и, таким образом, print печатает описание графа tf.Tensor.

Чтобы увидеть содержимое tf.Tensor при использовании Tensorflow 2.0, вы должны использовать tf.print вместо print, так как первый преобразуется в графическое представление, а второй нет.

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