升级TensorFlow到2.6后报no attribute 'python'错误如何解决
报错原因
tf.python是TensorFlow的内部模块路径,官方从一开始就不推荐普通用户直接调用该路径下的接口,这类内部接口不会纳入版本兼容保障范围,版本迭代时会随时调整甚至移除。- TensorFlow从2.5版本开始正式封闭了顶层
tf.python的对外访问权限,因此升级到2.6版本后,你调用tf.python.framework.ops.EagerTensor的代码就会触发找不到属性的报错。
修复方案
根据你的使用场景,可二选一:
- 如果你只是需要判断变量是否为TensorFlow张量(包含EagerTensor、GraphTensor等所有张量类型),直接用官方公开的判断接口
tf.is_tensor()即可,修改后的代码如下:
if tf.is_tensor(S):
- 如果你需要严格区分判断是否为EagerTensor类型,直接导入官方公开暴露的
EagerTensor类做判断即可,更推荐用isinstance做类型判断,兼容继承场景,代码如下:
from tensorflow import EagerTensor # 类型判断逻辑 if isinstance(S, EagerTensor):
内容的提问来源于stack exchange,提问作者ChaosPredictor
相关产品推荐
相关产品推荐

