Создайте обратный вызов tf.keras для сохранения прогнозов модели и целей для каждого пакета во время обучения в tf 2.0

В тензорном потоке 2 выборка и назначение больше не поддерживаются. Доступ к результатам пакета в tf 1.x в настраиваемом обратном вызове keras возможен после ответа, предоставленного в https://stackoverflow.com/a/47081613/9949099 В tf.keras и tf 2.0 при активном выполнении выборки не поддерживаются, поэтому решение для tf 1.x не работает. Есть ли способ получить y_true и y_pred внутри обратного вызова on_batch_end пользовательского обратного вызова tf.keras?

Я попытался изменить ответ, работающий в tf.1, как показано ниже

from tf.keras.callbacks import Callback

class CollectOutputAndTarget(Callback):
    def __init__(self):
        super(CollectOutputAndTarget, self).__init__()
        self.targets = []  # collect y_true batches
        self.outputs = []  # collect y_pred batches

    def on_batch_end(self, batch, logs=None):
        # evaluate the variables and save them into lists
        # How to change the following 2 lines so that in tf.2 eager execution collect the batch results
        self.targets.append(K.eval(self.model._targets[0]))
        self.outputs.append(K.eval(self.model.outputs[0]))

Когда я запускаю приведенный выше код, код не работает, доступ к данным в self.model._targets [0] или self.model.outputs [0], по-видимому, невозможен


person Dimitris    schedule 04.10.2019    source источник
comment
Приведенный выше код не запускается сам по себе - вы можете значительно увеличить шансы на получение помощи, опубликовав полный пример, который должен выполняться, но не запускается.   -  person bers    schedule 08.01.2020
comment
Когда вы говорите, что код не работает, какое сообщение об ошибке вы получаете? Для меня доступ к self.model.outputs[0] работает нормально, но преобразование их в numpy - нет.   -  person bers    schedule 08.01.2020
comment
Я получил свою собственную версию этого, отключив нетерпеливое выполнение: tf.compat.v1.disable_eager_execution(). Так что это не сам по себе TF2, но это может быть просто побочным эффектом нетерпеливого выполнения.   -  person bers    schedule 08.01.2020
comment
Это может ответить на ваш вопрос: stackoverflow.com/a/59697739/880783   -  person bers    schedule 11.01.2020