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()属性”