В тензорном потоке 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], по-видимому, невозможен
self.model.outputs[0]
работает нормально, но преобразование их вnumpy
- нет. - person bers   schedule 08.01.2020tf.compat.v1.disable_eager_execution()
. Так что это не сам по себе TF2, но это может быть просто побочным эффектом нетерпеливого выполнения. - person bers   schedule 08.01.2020