手把手解决module ‘tensorflow‘ has no attribute ‘placeholder

1、问题背景:构建神经网络在加入卷积层时出现报错

face_recigntion_model.add(Conv2D(32,3,3,input_shape=(IMAGE_SIZE,IMAGE_SIZE,3),activation='relu'))

AttributeError: module 'tensorflow' has no attribute 'placeholder'

2、报错原因:可能是由于tf.placeholder的版本问题,tf.placeholder是tensorflow1.x版本的东西,tensorflow2.0就不能用了

查看自己的TensorFlow版本print(tf.__version__)

我的为2.8.0,需要降版本

3、解决方法:

方法1:

修改import tensorflow as tf

import tensorflow.compat.v1 as tf

tf.disable_v2_behavior()

方法2:

修改import tensorflow as tf

import tensorflow.compat.v1 as tf

tf.compat.v1.disable_eager_execution()

方法3:我采用上述两种方式都不行,需要手动降TensorFlow的版本,方式为将高版本python改变成低版本python以安装低版本tensorflow.

1、先卸载已有的TensorFlow,在终端中输入:

pip uninstall tensorflow进行卸载

2、将编译环境降为python3.6

由于python3.7以上安装tensorflow只有2.x的版本,所以需要将编译环境也降到python3.6

安装python3.6,在终端中输入:

conda create --name py36 python=3.6 anaconda

重启pycharm,激活python3.6,在终端中输入:

activate py36

验证环境,在终端中输入:

python –version

输出为:

Python 3.6.13 :: Anaconda, Inc.

如果还是原来的版本,需要重新启动下pycharm在检查版本。

3、安装低版本TensorFlow

安装TensorFlow1.4.0,在终端中输入:

pip install tensorflow==1.4.0 -i Simple Index

安装成功

PS:新的编译环境中可能会缺少很多需要用的包,需要采用pip install 下载相关包

4、后续问题补充

缺少cv2、sklearn… 在终端通过pip安装

pip install opencv-python -i Simple Index

pip install scikit-learn -i https://pypi.douban.com/simple

继续报错:cannot import name ‘tf2‘

原因:keras的版本和tensorflow的版本不匹配,终端输入:

pip list找到TensorFlow的版本

tensorflow             1.4.0

在对应表格中找到对应的keras版本,通过pip安装

pip install keras==2.0.8 -i https://pypi.douban.com/simple

手把手解决module ‘tensorflow‘ has no attribute ‘placeholder_第1张图片

每解决一个问题就运行下程序,遇到新的问题解决新的问题,直至程序能够运行下去不报错。

5、个人心得

如果网络上提供的方法不能解决问题,不要一直找新的答案,要先清楚问题的原因是什么,再去解决。譬如本次报错的主要问题主要是TensorFlow的版本不对,所以输入什么代码以及有没有用不重要,重要的是需要寻找并完成TensorFlow低版本的替代工作。

如果我解决了你的问题,请点赞给我加油,也谢谢在解决问题过程中参考的诸位大佬们。。

 主要参考:

将高版本py与tensorflow改变成低版本python以安装低版本tensorflow_树顶上的橙子的博客-CSDN博客_安装低版本tensorflow

 

你可能感兴趣的:(opencv,python,卷积神经网络)