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.01.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的安装教程

如何让 Tensorflow Profiler 在 Tensorflow 2.5 中使用“tensorflow-macos”和“tensorflow-metal”工作

python [test tensorflow] test tensorflow installation #tensorflow

关于tensorflow的显存占用问题

java调用tensorflow训练好的模型

tensorflow新手必看,tensorflow入门教程,tensorflow示例代码