Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建tf.keras回调,以在tf 2.0培训期间保存每个批次的模型预测和目标_Python_Tensorflow_Tf.keras_Eager Execution - Fatal编程技术网

Python 创建tf.keras回调,以在tf 2.0培训期间保存每个批次的模型预测和目标

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

在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 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本身,但它可能只是急切执行的副作用?