Keras 2使用Dense添加输入层时出现Protobuf容器类型错误求助
这个错误我之前帮不少开发者排查过,大概率是protobuf版本不兼容搞的鬼——Keras(尤其是和TensorFlow绑定使用时)对protobuf的版本有严格要求,版本过高或过低都会触发这类容器对象的类型不匹配问题。
给你几个一步步解决的方案:
首先检查当前protobuf版本:
在终端运行pip show protobuf,看看输出的版本号。如果是3.21及以上版本,很大概率就是它的问题。卸载当前版本的protobuf:
执行命令pip uninstall -y protobuf(如果用Anaconda环境,换成conda uninstall protobuf更稳妥)。安装兼容的protobuf版本:
对于TensorFlow 2.x系列,推荐安装3.19.x版本,比如:pip install protobuf==3.19.6(Anaconda环境用conda install protobuf=3.19.6)。额外注意:尽量使用TensorFlow内置的Keras
如果你之前是单独安装的Keras(pip install keras),建议改用TensorFlow自带的Keras模块,也就是把导入语句从from keras.layers import Dense改成from tensorflow.keras.layers import Dense。单独安装的Keras很容易和TensorFlow的依赖版本冲突,这也是常见的坑。
做完这些步骤后,重新运行你的神经网络代码,应该就能解决这个TypeError了。
内容的提问来源于stack exchange,提问作者user9447544

