TensorFlow, "'module' object has no attribute 'placeholder'"



我已经尝试使用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模块。

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

  1. 包含输入脚本的目录(如果未指定文件,则为当前目录)。

  2. PYTHONPATH(目录名称列表, 使用与外壳变量 PATH 相同的语法)。

  3. 与安装相关的默认值。

它也发生在我身上。我有 tensorflow,它运行良好,但是当我在之前的 tensorflow 旁边安装 tensorflow-gpu 时,出现了此错误,然后我做了这 3 个步骤,它开始工作没有问题:

  1. 我从 Anaconda 中删除了 tensorflow-gpu、tensorflow、tensorflow-base 包。用。

conda remove tensorflow-gpu tensorflow tensorflow-base

  1. 重新安装了 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

请查看将 TensorFlow

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'

相关内容

最新更新