AttributeError:“Tensor”对象在自定义损失函数中没有属性“numpy”(Tensorflow 2.1.0)

Posted

技术标签:

【中文标题】AttributeError:“Tensor”对象在自定义损失函数中没有属性“numpy”(Tensorflow 2.1.0)【英文标题】:AttributeError: 'Tensor' object has no attribute 'numpy' in custom loss function (Tensorflow 2.1.0) 【发布时间】:2020-07-18 17:06:16 【问题描述】:

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

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

但我有这个错误:

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

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

【问题讨论】:

【参考方案1】:

答案是:将run_eagerly=True 放入model.compile

【讨论】:

【参考方案2】:

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

对此至少有两种解决方案:

    安装最新的夜间版本。 设置model.run_eagerly = True

【讨论】:

使用model.run_eagerly = True 错误依然存在! @FrancescoScala 试试第一个选项, 试过了:tf 2.0.1, 2.1.0, 2.2.0rc2, tb-nightly (2.3.0something) 我每次都遇到同样的错误!

以上是关于AttributeError:“Tensor”对象在自定义损失函数中没有属性“numpy”(Tensorflow 2.1.0)的主要内容,如果未能解决你的问题,请参考以下文章

AttributeError:“张量”对象在 Tensorflow 2.1 中没有属性“numpy”

AttributeError: 'Tensor' 对象没有属性'_in_graph_mode'。

AttributeError:“张量”对象没有属性“numpy”

AttributeError: 'Tensor' object has no attribute 'numpy' 使用版本 2.4.1 启用了急切执行

AttributeError: Tensor.op 在启用 Eager Execution 时毫无意义

debug --“AttributeError: ‘Tensor‘ object has no attribute ‘numpy‘ --- tensor 没有 numpy()属性”