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'

有人知道我该怎么补救吗?

268983 次浏览

解决方案: 不要使用“ tensorflow”作为你的文件名。

注意,您使用 tensorflow. py 作为文件名:

import tensorflow as tf

然后你实际上导入了脚本文件“ tensorflow. py”,这个脚本文件在你当前的工作目录下,而不是从 Google 导入“真正的”tensorflow 模块。

下面是导入时搜索模块的顺序:

  1. 包含输入脚本的目录(或没有指定文件时的工作目录)。

  2. PYTHONPATH (目录名的列表, with the same syntax as the shell variable PATH).

  3. The installation-dependent default.

Faced same issue on Ubuntu 16LTS when tensor flow was installed over existing python installation.

解决办法: 1.)Uninstall tensorflow from pip and pip3

sudo pip uninstall tensorflow
sudo pip3 uninstall tensorflow

2.)Uninstall 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)安装张量流到 python3

sudo pip3 install --upgrade pip

对于非 GPU 张量流,运行以下命令

sudo pip3 install --upgrade tensorflow

对于 GPU 张量流,运行以下命令

sudo pip3 install --upgrade tensorflow-gpu

Suggest not to install GPU and vanilla version of tensorflow

我也经历过。我有张量流,它的工作非常好,但是当我安装张量流-gpu 沿着以前的张量流,这个错误出现了,然后我做了这3个步骤,它开始工作没有问题:

  1. 我从 Anaconda 移除了张量流-gpu,张量流,张量流-基础包。

conda remove tensorflow-gpu tensorflow tensorflow-base

  1. 重新安装张量流。使用

conda install tensorflow

如果你写错了 placeholder单词,可能是打字错误。 在我的例子中,我把它拼错为 placehoder,得到的错误是这样的: AttributeError: 'module' object has no attribute 'placehoder'

看起来。占位符() ,。Set _ default _ graph () ,其他的在版本2中被删除。我使用 Docker image: tensorflow/tensorflow:latest-gpu-py3遇到了这个问题,它会自动提取最新版本。我在1.13.1中工作,自动升级到2,并开始收到错误消息。我通过更具体地处理我的图像 tensorflow/tensorflow:1.13.1-gpu-py3来解决这个问题。

More info can be found here: https://www.tensorflow.org/alpha/guide/effective_tf2

如果在升级到 TensorFlow 2.0之后出现这个错误,你仍然可以使用1.X API 替换:

import tensorflow as tf

作者

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

I also got the same error. May be because of the version of tensorflow. 在安装张量流1.4.0之后,我从错误中得到了缓解。

pip install tensorflow==1.4.0

如果您使用的是 TensorFlow 2.0,那么为 tf 1.x 开发的一些代码可能无法工作。要么你可以按照链接: https://www.tensorflow.org/guide/migrate

或者您可以通过以下方法安装以前版本的 tf Pip3安装张量流 = = 版本

因为在 tensflow 2.0版本中不能使用占位符,所以需要使用 tensflow 1 * ,或者需要更改代码来修复 tensflow 2.0

之前我也遇到过同样的问题,在试图升级 Tensorflow 之后,我通过重新安装 Tensorflow 和 Keras 解决了这个问题。

pip uninstall tensorflow

pip uninstall keras

然后:

pip install tensorflow

pip install keras

如果你在张量流2.0.0 + 上得到这个结果,很有可能是因为代码与新版本的张量流不兼容。

要解决这个问题,运行 tf_upgrade_v2 script

tf_upgrade_v2 --infile=YOUR_SCRIPT.py --outfile=YOUR_SCRIPT.py

最近的版本2.0不支持占位符。 我使用命令 conda remove tensorflow卸载了2.0。 然后使用命令 conda install -c conda-forge tensorflow=1.15.0安装1.15.0。 1.15是版本1系列的最新版本。您可以根据自己的意愿和要求进行更改。 要查看所有版本,请使用命令: conda search tensorflow。 它在 Windows 的 Anaconda3上运行良好。

导入张量流的旧版本而不是新版本

[ https://inneka.com/ml/tf/tensorflow-module-object-has-no-attribute-placeholder/][1]

导入 tensorflow. compat.v1作为 tf Able _ v2 _ action ()

问题在于 TensorFlow 版本; 您正在运行的是 2.01.5以上的版本,而 placeholder只能与 1.4一起工作。

所以只需卸载 TensorFlow,然后用1.4版本重新安装它,一切都会正常运行。

您需要在张量流2中使用 keras 模型,如下所示

import tensorflow as tf
from tensorflow.python.keras.layers import  Input, Embedding, Dot, Reshape, Dense
from tensorflow.python.keras.models import Model

在张量流 = 2.0中避免使用下面的删除语句

i̶m̶p̶o̶r̶t̶ ̶t̶e̶n̶s̶o̶r̶f̶l̶o̶w̶ ̶a̶s̶ ̶t̶f̶ ̶x̶ ̶=̶ ̶t̶f̶.̶p̶l̶a̶c̶e̶h̶o̶l̶d̶e̶r̶(̶s̶h̶a̶p̶e̶=̶[̶N̶o̶n̶e̶,̶ ̶2̶]̶,̶ ̶d̶t̶y̶p̶e̶=̶t̶f̶.̶f̶l̶o̶a̶t̶3̶2̶)̶

可以使用以下代码 禁用 v2行为

这个很适合我。

import tensorflow.compat.v1 as tf


tf.disable_v2_behavior()
x = tf.placeholder(shape=[None, 2], dtype=tf.float32)


出现这个错误是因为我们使用的是张量流版本2,而命令来自版本1。因此,如果我们使用:

tf.compat.v1.summary.(method_name)

会成功的

Instead of tf.placeholder(shape=[None, 2], dtype=tf.float32) use something like 如果您不想完全禁用 v2,请使用 tf.compat.v1.placeholder(shape=[None, 2], dtype=tf.float32)

试试这个:

pip install tensorflow==1.14

或者这个(如果你有 GPU) :

pip install tensorflow-gpu==1.14
import tensorflow.compat.v1 as tf


tf.disable_v2_behavior()

工程。 我使用的是 Python 3.7和 tensorflow 2.0。

请看一下 将 TensorFlow 1代码迁移到 TensorFlow 2

These codes:

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