在导入graphsurgeon时报错:ImportError: cannot import name 'NodeDef' from 'tensorflow'
文章目录:
先说明一下我自己的环境:
Ubuntu18.04
cuda10.2
cudnn7.6.5
TensorRT-7.0.0.11
uff0.6.5
1 错误原因分析
这个错误时由于:NodeDef
在TensorFlow1.x
中是支持的,在TensorFlow2.x
是不支持的,而我安装的tensorflow版本恰好是:tensorflow-gpu=2.2
,因此导致这错误
2 解决方法
2.1 解决方法一(不推荐)
把tensorflow的版本降低(参考),降低到tensorflow1.x版本
,
把tensorflow的版本降到1.x
版本,如下:
pip install tensorflow-gpu==1.4.0
之所以不推荐这种方法,是因为Tensorflow1.x版本太老,用 的也比较少,而且不一定满足你现在的项目需求
2.2 解决方法二(推荐)
1、修改_utils.py中的第二行代码
,路径如下,大家根据自己的虚拟环境更改
/home/shl/anaconda3/envs/mmdetection/lib/python3.7/site-packages/graphsurgeon/_utils.py
把第二行的from tensorflow import NodeDef
更改为from tensorflow.compat.v1 import NodeDef
2、修改DynamicGraph.py中的第四行代码
,路径如下,大家根据自己的虚拟环境更改
/home/shl/anaconda3/envs/mmdetection/lib/python3.7/site-packages/graphsurgeon/DynamicGraph.py
把四行的from tensorflow import GraphDef, NodeDef
修改为from tensorflow.compat.v1 import GraphDef, NodeDef
把上面两处修改完之后,就可以成功导入graphsurgeon
了:
注意:
tensorflow.compat
是专门为了兼容某些tensorflow.1x版本
和兼容某些tensorflow2.x版本
的模块
-
tensorflow.compat.v1
:兼容某些tensorflow.1x版本
-
tensorflow.compat.v2
:兼容某些tensorflow.2x版本
所以,下载再遇到这种tensorflow版本问题,可以使用这个模块修改
♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠