我已经尝试使用tensorflow两天了,现在在python2.7和3.4中一遍又一遍地安装和重新安装它。 无论我做什么,在尝试使用tensorflow.placeholder()时都会收到此错误消息
这是非常样板的代码:
tf_in = tf.placeholder("float", [None, A]) # Features
无论我做什么,我总是得到跟踪:
Traceback (most recent call last):
File "/home/willim/PycharmProjects/tensorflow/tensorflow.py", line 2, in <module>
import tensorflow as tf
File "/home/willim/PycharmProjects/tensorflow/tensorflow.py", line 53, in <module>
tf_in = tf.placeholder("float", [None, A]) # Features
AttributeError: 'module' object has no attribute 'placeholder'
有人知道我该如何解决这个问题吗?
如果您在升级到 TensorFlow 2.0 后遇到此错误,您仍然可以通过替换以下内容来使用 1.X API:
import tensorflow as tf
由
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
解决方案:不要使用"tensorflow"作为文件名。
请注意,您使用 tensorflow.py 作为文件名。我猜你写的代码是这样的:
import tensorflow as tf
然后,您实际上是在导入当前工作目录下的脚本文件"tensorflow.py",而不是Google的"真实"tensorflow模块。
以下是导入时搜索模块的顺序:
包含输入脚本的目录(如果未指定文件,则为当前目录)。
PYTHONPATH(目录名称列表, 使用与外壳变量 PATH 相同的语法)。
与安装相关的默认值。
它也发生在我身上。我有 tensorflow,它运行良好,但是当我在之前的 tensorflow 旁边安装 tensorflow-gpu 时,出现了此错误,然后我做了这 3 个步骤,它开始工作没有问题:
- 我从 Anaconda 中删除了 tensorflow-gpu、tensorflow、tensorflow-base 包。用。
conda remove tensorflow-gpu tensorflow tensorflow-base
- 重新安装了 TensorFlow。用
conda install tensorflow
而不是tf.placeholder(shape=[None, 2], dtype=tf.float32)
使用类似的东西 tf.compat.v1.placeholder(shape=[None, 2], dtype=tf.float32)
,如果您不想完全禁用 v2。
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
工程。我正在使用Python 3.7和tensorflow 2.0。
似乎 .placeholder() 、.reset_default_graph() 和其他版本在版本 2 中删除了。 我在使用 Docker 镜像时遇到了这个问题:tensorflow/tensorflow:latest-gpu-py3
它会自动拉取最新版本。 我在 1.13.1 中工作,并自动"升级到 2"并开始收到错误消息。 我通过更具体地使用我的图像来解决此问题:tensorflow/tensorflow:1.13.1-gpu-py3
.
更多信息可以在这里找到:https://www.tensorflow.org/alpha/guide/effective_tf2
避免在 tensorflow=2.0 中使用下面的删除语句
呵
��可以使用以下代码禁用 v2 行为
这个对我来说非常有效。
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
x = tf.placeholder(shape=[None, 2], dtype=tf.float32)
我也遇到了同样的错误。可能是因为张量流的版本。安装张量流 1.4.0 后,我从错误中解脱出来。
pip install tensorflow==1.4.0
如果您使用的是 TensorFlow 2.0,那么为 tf 1.x 开发的某些代码可能无法正常工作。您可以点击以下链接:https://www.tensorflow.org/guide/migrate
或者您可以通过以下方式安装以前版本的 tfpip3 install tensorflow==version
1 代码迁移到 TensorFlow 2。
这些代码:
import tensorflow as tf
tf_in = tf.placeholder("float", [None, A]) # Features
需要在 TensorFlow 2 中迁移,如下所示:
import tensorflow as tf
import tensorflow.compat.v1 as v1
tf_in = vi.placeholder("float", [None, A]) # Features
导入旧版本的张量流而不是新版本
[https://inneka.com/ml/tf/tensorflow-module-object-has-no-attribute-placeholder/][1]
import tensorflow.compat.v1 as tftf.disable_v2_behavior()
keras 模型与 tensorflow 2 一起使用,如下所示
import tensorflow as tf
from tensorflow.python.keras.layers import Input, Embedding, Dot, Reshape, Dense
from tensorflow.python.keras.models import Model
最新版本 2.0 不支持占位符。我使用命令卸载了 2.0:conda remove tensorflow
.然后我使用命令安装了 1.15.0:conda install -c conda-forge tensorflow=1.15.0
.1.15 是版本 1 系列中的最新版本。您可以根据需要和要求进行更改。要查看所有版本,请使用命令:conda search tensorflow
。它适用于Windows中的Anaconda3。
试试这个:
pip install tensorflow==1.14
或者这个(如果你有 GPU):
pip install tensorflow-gpu==1.14
如果你在 tensorflow 2.0.0+ 上得到这个,很可能是因为代码与较新版本的 tensorflow 不兼容。
若要解决此问题,请运行tf_upgrade_v2
脚本。
tf_upgrade_v2 --infile=YOUR_SCRIPT.py --outfile=YOUR_SCRIPT.py
在 Ubuntu 16LTS 上遇到同样的问题,当张量流安装在现有的 python 安装上时。
解决方法:1.)从 pip 和 pip3 中卸载张量流
sudo pip uninstall tensorflow
sudo pip3 uninstall tensorflow
2.)卸载python和python3
sudo apt-get remove python-dev python3-dev python-pip python3-pip
3.)只安装一个版本的python(我用了python 3)
sudo apt-get install python3-dev python3-pip
4.)将 tensorflow 安装到 python3
sudo pip3 install --upgrade pip
对于非 GPU 张量流,请运行此命令
sudo pip3 install --upgrade tensorflow
对于 GPU 张量流,运行以下命令
sudo pip3 install --upgrade tensorflow-gpu
建议不要安装 GPU 和原版的张量流
出现错误是因为我们正在使用张量流版本 2,并且命令来自版本 1。因此,如果我们使用:
tf.compat.v1.summary.(method_name)
它会工作
因为在 tensflow2.0version 中不能使用占位符,所以需要使用 tensflow1*,或者需要更改代码来修复 tensflow2.0
在尝试升级 Tensorflow 后,我遇到了同样的问题,我通过重新安装 Tensorflow 和 Keras 解决了它。
pip uninstall tensorflow
pip uninstall keras
然后:
pip install tensorflow
pip install keras
有很多建议,其中一些确实有效。但我宁愿将 v1 tf 项目转换为 v2 项目以获得更好的维护。我很惊讶没有人在这里建议它:
$tf_upgrade_v2
--intree my_project/
--outtree my_project_v2/
--reportfile report.txt
我从这个堆栈溢出答案中复制粘贴:属性错误:模块"张量流"没有属性"get_variable"
您确实需要检查报告.txt并确保它符合您的预期。
问题出在 TensorFlow 版本上;您正在运行的版本是 2.0
或高于 1.5
的版本,而placeholder
只能使用 1.4
。
因此,只需卸载 TensorFlow,然后使用 1.4 版再次安装它,一切正常。
看起来您正在尝试将TensorFlow 2.x语法与TensorFlow 1.x一起使用。您遇到的错误消息表明 TensorFlow 2.13 没有"占位符"属性。
在 TensorFlow 2.x 中,你应该使用 tf。变量或 tf.constant,用于创建具有特定值的张量,不再使用占位符。相反,您可以使用常规的 Python 变量。
以下是修改代码以使用 TensorFlow 2.x 的方法:
import tensorflow as tf
tf_in = tf.Variable( [None, A], dtype=tf.float32)
如果您写错了placeholder
单词,则可能是拼写错误。就我而言,我将其拼写错误为placehoder
并得到这样的错误: AttributeError: 'module' object has no attribute 'placehoder'