Python 创建tf.keras回调,以在tf 2.0培训期间保存每个批次的模型预测和目标
在tensorflow 2中,不再支持获取和分配。按照中提供的答案,可以在自定义keras回调中访问tf 1.x中的批处理结果 在tf.keras和tf2.0中,不支持在急切执行下进行抓取,因此为tf1.x提供的解决方案不起作用。 有没有办法在tf.keras自定义回调的on_batch_end回调中获取y_true和y_pred 我已经尝试过修改tf.1中的答案,如下所示Python 创建tf.keras回调,以在tf 2.0培训期间保存每个批次的模型预测和目标,python,tensorflow,tf.keras,eager-execution,Python,Tensorflow,Tf.keras,Eager Execution,在tensorflow 2中,不再支持获取和分配。按照中提供的答案,可以在自定义keras回调中访问tf 1.x中的批处理结果 在tf.keras和tf2.0中,不支持在急切执行下进行抓取,因此为tf1.x提供的解决方案不起作用。 有没有办法在tf.keras自定义回调的on_batch_end回调中获取y_true和y_pred 我已经尝试过修改tf.1中的答案,如下所示 from tf.keras.callbacks import Callback class CollectOutputA
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.\u targets[0]或self.model.outputs[0]中的数据显然是不可能的上面的代码不是自己运行的-您可以通过发布一个应该运行但不运行的完整示例来大大增加获得帮助的机会。当您说“代码失败”时,您收到的错误消息是什么?对我来说,访问
self.model.outputs[0]
可以很好地工作,但将它们转换为numpy
则不行。我通过禁用急切执行获得了自己的版本:tf.compat.v1.禁用急切执行()。因此,失败的并不是TF2本身,但它可能只是急切执行的副作用?