使用TensorFlow InceptionV4遇ImportError及inception_utils缺失问题求助
解决InceptionV4导入错误及tf-slim依赖问题
问题现象
- 运行TensorFlow官方InceptionV4模型时触发ImportError:
ImportError cannot import name 'tensor' from 'tensorflow.python.framework' (C:\Users\zxc\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow\python\framework\__init__.py) File "C:\Labbb\inception\model_tensorflow_official.py", line 28, in <module> import tf_slim as slim File "C:\Labbb\inception\main.py", line 14, in <module> from model_tensorflow_official import * ImportError: cannot import name 'tensor' from 'tensorflow.python.framework' (C:\Users\zxc\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow\python\framework\__init__.py)
- 当前导入代码:
from __future__ import absolute_import from __future__ import division from __future__ import print_function import tensorflow.compat.v1 as tf import tf_slim as slim from nets import inception_utils
- 额外问题:tf-slim的nets目录无
inception_utils文件,官方仓库也不存在该文件;已尝试TensorFlow2.5+Keras2.5、TensorFlow2.2+Keras2.3.1版本组合,问题未解决。
解决方案
1. 修复tensor导入错误
该错误源于TF2.x移除了tensorflow.python.framework.tensor模块,而旧版tf-slim依赖此模块。可选两种方案:
- 改用TensorFlow 1.15.x版本,官方InceptionV4的slim代码基于TF1.x开发,兼容性最佳。
- 若坚持使用TF2.x,修改tf-slim内部代码:找到所有导入
tensor的位置,替换为from tensorflow.python.framework import ops,并用ops.Tensor替代tensor类型引用。
2. 解决inception_utils缺失问题
inception_utils不在独立的tf-slim仓库中,而是存于TensorFlow models仓库的slim模块内,解决步骤:
- 克隆TensorFlow models仓库,将仓库内
research/slim/nets/inception_utils.py复制到项目的nets目录下。 - 或在代码开头添加路径配置,让Python能找到models仓库的slim模块:
import sys sys.path.append('/path/to/tensorflow/models/research')
保持原from nets import inception_utils导入语句即可。
3. 环境版本适配建议
若使用TF2.x,搭配最新版tf-slim,同时开启TF1兼容模式:
tf.disable_v2_behavior()
最稳定的环境组合为TensorFlow 1.15.x + tf-slim 1.1.0,完全匹配官方InceptionV4代码的开发环境。
内容的提问来源于stack exchange,提问作者Syuuuu
相关产品推荐
相关产品推荐

