Создайте функцию обратного вызова tf.keras, чтобы сохранить прогнозы и цели модели для каждого пакета во время обучения в tf 2.0 - PullRequest
1 голос
/ 04 октября 2019

В тензорном потоке 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], по-видимому, невозможно

...