Обратные вызовы tenorflow2: keras: model.fit () и активный режим - PullRequest
0 голосов
/ 25 апреля 2020

Я использую Tensorflow 2.1 с API Keras. Я придерживаюсь следующего стиля кодирования:

    model = tf.keras.Sequential()
    ...
    model.fit(..., callbacks=callbacks)

Теперь я хотел бы сохранить некоторое значение тензора промежуточного слоя в качестве сводки изображения (как пример того, что происходит на n-м этапе обучения). Для этого я реализовал свой собственный класс обратного вызова. Я также узнал, как реализован keras.callbacks.TensorBoard, поскольку он может сохранять веса слоев в виде сводок изображений. В моем on_epoch_end я делаю следующее:

tensor = self.model.get_layer(layer_name).output

with context.eager_mode():
    with ops.init_scope():
        tensor = tf.keras.backend.get_value(tensor)
    tf.summary.image(layer_name, tensor, step=step, max_outputs=1)

К сожалению, я все еще сталкиваюсь с проблемой, связанной с рвением / графикой:

    tensor = tf.keras.backend.get_value(tensor)
  File "/home/matwey/lab/venv/lib/python3.6/site-packages/tensorflow_core/python/keras/backend.py", line 3241, in get_value
    return x.numpy()
AttributeError: 'Tensor' object has no attribute 'numpy'

К сожалению, мало что или нет документация о том, как правильно комбинировать обратные вызовы keras и tf.summary.image. Как я мог решить эту проблему?

upd: tf_nightly-2.2.0.dev20200427 имеет такое же поведение.

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