AttributeError: 'Tensor' object has no attribute 'numpy' in custom loss function (Tensorflow 2.1.0)

AttributeError: 'Tensor' object has no attribute 'numpy' in custom loss function (Tensorflow 2.1.0)

我想训练一个带有自定义损失函数的模型,为此,我需要在下面的方法中将张量转换为 numpy 数组:

def median_loss_estimation(y_true, y_predicted):
    a = y_predicted.numpy()

但是我有这个错误:

AttributeError: 'Tensor' object has no attribute 'numpy'

为什么? 如何将张量转换为 numpy 数组?

你做对了,目前只有 Tensorflow 2.1 在这方面有问题。如果您 运行 未启用急切模式的代码,通常会发生这种情况。但是,默认情况下,Tensorflow 2 运行s 处于急切模式……或者至少应该如此。已跟踪问题 here

至少有两种解决方案:

  1. 安装最新的每晚构建。
  2. 设置model.run_eagerly = True

答案是:把run_eagerly=True放在model.compile!