调用tf.keras.applications.ResNet152V2出现protobuf描述符池报错如何解决
问题原因
你的操作问题出在安装TensorFlow时没有确认依赖版本匹配,也没有提前排查虚拟环境中已有的包会不会带来依赖冲突。
你遇到的这个报错是protobuf(谷歌的序列化协议库)版本与当前安装的TensorFlow版本不兼容导致的。TensorFlow对依赖的protobuf版本范围有明确要求,当环境中安装的protobuf版本不在适配范围内、或者存在多个版本的protobuf冲突时,就会出现proto文件无法正常解析的错误。
解决方案
- 方案一:直接安装适配版本的protobuf
先执行pip show tensorflow查看已安装的TensorFlow版本,再安装对应适配范围内的protobuf版本,主流稳定TensorFlow版本适配的3.20.3版本可直接执行:
安装完成后重启Python运行环境,重新运行代码验证即可。pip install protobuf==3.20.3 - 方案二:干净重装TensorFlow自动匹配依赖
先卸载当前环境中的TensorFlow和protobuf,避免残留版本冲突:
再重新安装TensorFlow,pip会自动拉取适配的protobuf版本:pip uninstall -y tensorflow protobufpip install tensorflow # 若需要指定版本可改为pip install tensorflow==[目标版本号] - 方案三:排查其他依赖冲突
执行pip check命令检查当前虚拟环境中所有包的依赖冲突,如果有其他第三方包强制锁定了不符合TensorFlow要求的protobuf版本,调整对应包的版本适配即可。
内容的提问来源于stack exchange,提问作者Tobi Lawful
相关产品推荐
相关产品推荐

