TensorFlow,“‘模块’对象没有属性‘占位符’”
Posted
技术标签:
【中文标题】TensorFlow,“‘模块’对象没有属性‘占位符’”【英文标题】:TensorFlow, "'module' object has no attribute 'placeholder'" 【发布时间】:2016-09-19 21:50:49 【问题描述】:我已经尝试使用 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.py
吗?
【参考方案1】:
请查看Migrate your TensorFlow 1 code to 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
【讨论】:
【参考方案2】:import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
有效。 我正在使用 Python 3.7 和 tensorflow 2.0。
【讨论】:
【参考方案3】:试试这个:
pip install tensorflow==1.14
或者这个(如果你有 GPU):
pip install tensorflow-gpu==1.14
【讨论】:
【参考方案4】:出现错误是因为我们使用的是 tensorflow 版本 2,而命令来自版本 1。所以如果我们使用:
tf.compat.v1.summary.(method_name)
会有用的
【讨论】:
【参考方案5】:如果您使用的是 TensorFlow 2.0,那么为 tf 1.x 开发的某些代码可能无法正常工作。您可以点击链接:https://www.tensorflow.org/guide/migrate
或者您可以通过以下方式安装以前版本的 tf pip3 install tensorflow==版本
【讨论】:
【参考方案6】:而不是tf.placeholder(shape=[None, 2], dtype=tf.float32)
使用类似的东西
tf.compat.v1.placeholder(shape=[None, 2], dtype=tf.float32)
如果您不想完全禁用 v2。
【讨论】:
【参考方案7】:避免在 tensorflow=2.0 中使用以下划掉的语句
导入̶t̶e̶n̶s̶o̶r̶f̶l̶o̶w̶作为TF X̶=̶̶t̶f̶.̶p̶l̶a̶c̶e̶h̶o̶l̶d̶e̶r̶(形状=̶[NONE,̶2]̶,̶DTYPE =̶t̶f̶.̶f̶l̶o̶a̶t̶3̶2̶)̶ P>
您可以使用以下代码禁用 v2 行为
这个非常适合我。
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
x = tf.placeholder(shape=[None, 2], dtype=tf.float32)
【讨论】:
魔法刚刚发生。谢谢。【参考方案8】:您需要使用带有 tensorflow 2 的 keras 模型,如此处
import tensorflow as tf
from tensorflow.python.keras.layers import Input, Embedding, Dot, Reshape, Dense
from tensorflow.python.keras.models import Model
【讨论】:
【参考方案9】:在现有的 python 安装上安装张量流时,在 Ubuntu 16LTS 上面临同样的问题。
解决方法: 1.)从 pip 和 pip3 卸载 tensorflow
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 tensorflow,运行此命令
sudo pip3 install --upgrade tensorflow
对于 GPU tensorflow,运行以下命令
sudo pip3 install --upgrade tensorflow-gpu
建议不要安装GPU和原版tensorflow
【讨论】:
【参考方案10】:问题出在 TensorFlow 版本上;你正在运行的是2.0
或1.5
以上的东西,而placeholder
只能与1.4
一起使用。
因此,只需卸载 TensorFlow,然后使用 1.4 版再次安装它,一切都会正常运行。
【讨论】:
【参考方案11】:导入旧版本的tensorflow而不是新版本
[https://inneka.com/ml/tf/tensorflow-module-object-has-no-attribute-placeholder/][1]
将 tensorflow.compat.v1 导入为 tf tf.disable_v2_behavior()
【讨论】:
【参考方案12】:最新版本 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。
【讨论】:
【参考方案13】:这也发生在我身上。我有 tensorflow,它工作得很好,但是当我在之前的 tensorflow 旁边安装 tensorflow-gpu 时,出现了这个错误,然后我做了这 3 个步骤,它开始工作没有问题:
-
我从 Anaconda 中删除了 tensorflow-gpu、tensorflow、tensorflow-base 软件包。使用。
conda remove tensorflow-gpu tensorflow tensorflow-base
-
重新安装了张量流。使用
conda install tensorflow
【讨论】:
好人!解决了我的问题!!没想到是conda造成的 太棒了!很有帮助 非常感谢,但即使安装了“Tensorflow-gpu 1.2.1-Py36cuda8.0cudnn6.0_0”,我也无法使用 GPU。继续使用 CPU 而不是 GPU 执行。如果我用 tf.device('/gpu:0') 指定,那么我会收到异常说你只有 CPU 设备。 我很确定最后一步应该是 conda install tensorflow-gpu,否则你会被 cpu 卡住(只提到我之前的评论)。【参考方案14】:如果你在 tensorflow 2.0.0+ 上得到这个,很可能是因为代码与较新版本的 tensorflow 不兼容。
要解决此问题,请运行 tf_upgrade_v2
script。
tf_upgrade_v2 --infile=YOUR_SCRIPT.py --outfile=YOUR_SCRIPT.py
【讨论】:
【参考方案15】:在尝试升级 tensorflow 后,我遇到了同样的问题,我通过重新安装 TensorFlow 和 Keras 解决了这个问题。
pip uninstall tensorflow
pip uninstall keras
然后:
pip install tensorflow
pip install keras
【讨论】:
【参考方案16】:因为在tensflow2.0版本中不能使用占位符,所以需要使用tensflow1*,或者需要修改代码修复tensflow2.0
【讨论】:
【参考方案17】:我也遇到了同样的错误。可能是因为tensorflow的版本。 安装 tensorflow 1.4.0 后,我从错误中得到了缓解。
pip install tensorflow==1.4.0
【讨论】:
tensrflow 13.0.1 做到了。 (旧的从 pip 中删除)【参考方案18】:如果升级到 TensorFlow 2.0 后出现此错误,您仍然可以通过替换来使用 1.X API:
import tensorflow as tf
通过
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
【讨论】:
这正是我所做的,我得到了这个错误 这对我来说适用于“占位符”,但是一旦我在我试图遵循的教程中进入“贡献”就失败了。猜猜我需要尝试找到使用v2的教程。 没用!也许它只适用于tensorflow
?不是tensorflow-gpu
?
这应该被标记为接受的解决方案【参考方案19】:
似乎 .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
【讨论】:
【参考方案20】:如果您写错了placeholder
字,则可能是拼写错误。
就我而言,我将其拼写为placehoder
,并得到如下错误:
AttributeError: 'module' object has no attribute 'placehoder'
【讨论】:
【参考方案21】:解决方案:不要使用“tensorflow”作为文件名。
请注意,您使用 tensorflow.py 作为文件名。我猜你写的代码是这样的:
import tensorflow as tf
那么您实际上是在导入当前工作目录下的脚本文件“tensorflow.py”,而不是来自 Google 的“真正的”tensorflow 模块。
这是导入时搜索模块的顺序:
包含输入脚本的目录(或未指定文件时的当前目录)。
PYTHONPATH(目录名称列表, 使用与 shell 变量 PATH 相同的语法)。
依赖于安装的默认值。
【讨论】:
相关:我遇到了一个问题(tensorflow 0.9),脚本停止工作:“AttributeError: 'module' object has no attribute 'constant'”。感谢这个答案,我查看并注意到我有一个名为“tensorflow”的文件夹。我重命名了那个文件夹,我的脚本又可以工作了。 非常有用,它救了我的命! 超级好用:D 那么你应该如何导入它呢? @Sherzod 我想我已经展示了解决方案(粗体):不要使用“tensorflow”作为文件名。以上是关于TensorFlow,“‘模块’对象没有属性‘占位符’”的主要内容,如果未能解决你的问题,请参考以下文章
如何让 Tensorflow Profiler 在 Tensorflow 2.5 中使用“tensorflow-macos”和“tensorflow-metal”工作
python [test tensorflow] test tensorflow installation #tensorflow