TensorFlow,"'module'对象没有属性'占位符'"

use*_*715 25 python machine-learning tensorflow

我一直在尝试使用tensorflow两天,现在在python2.7和3.4中反复安装和重新安装它.无论我做什么,我在尝试使用tensorflow.placeholder()时都会收到此错误消息

这是非常的样板代码:

tf_in = tf.placeholder("float", [None, A]) # Features
Run Code Online (Sandbox Code Playgroud)

无论我做什么,我总会得到回溯:

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'
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决这个问题?

Lif*_*ang 37

解决方案:不要使用"tensorflow"作为文件名.

请注意,您使用tensorflow.py作为文件名.我想你写的代码如下:

import tensorflow as tf
Run Code Online (Sandbox Code Playgroud)

然后,您实际上是导入当前工作目录下的脚本文件"tensorflow.py",而不是谷歌的"真实"tensorflow模块.

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

  1. 包含输入脚本的目录(或未指定文件时的当前目录).

  2. PYTHONPATH(目录名列表,语法与shell变量PATH相同).

  3. 依赖于安装的默认值.

  • 相关:我有一个问题(tensorflow 0.9),因为脚本停止工作:"AttributeError:'module'对象没有属性'常量'".感谢这个答案,我看了看,发现我有一个名为"tensorflow"的文件夹.我重命名了该文件夹,我的脚本又重新运行了. (5认同)
  • 那么你应该如何导入它呢? (2认同)

u2g*_*les 28

如果在升级到TensorFlow 2.0后出现此错误,您仍然可以通过以下方式使用1.X API:

import tensorflow as tf
Run Code Online (Sandbox Code Playgroud)

通过

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
Run Code Online (Sandbox Code Playgroud)

  • 这对我的“占位符”有用,但一旦我在我试图遵循的教程中进行“贡献”,就失败了。我想我需要尝试找到一个使用 v2 的教程。 (8认同)
  • 这正是我所做的,我收到了这个错误 (5认同)

小智 15

而不是tf.placeholder(shape=[None, 2], dtype=tf.float32)使用像 tf.compat.v1.placeholder(shape=[None, 2], dtype=tf.float32),如果你不希望禁用V2完全。


小智 13

它也发生在我身上.我有张量流,它工作得很好,但是当我安装tensorflow-gpu与之前的tensorflow一起出现这个错误然后我做了这3个步骤,它开始工作没有问题:

  1. 我从Anaconda中删除了tensorflow-gpu,tensorflow,tensorflow-base软件包.使用.conda remove tensorflow-gpu tensorflow tensorflow-base
  2. 重新安装tensorflow.使用conda install tensorflow

  • 我很确定最后一步应该是 conda install tensorflow-gpu,否则你会被 cpu 困住(仅提及导致我之前的评论)。 (4认同)
  • 真棒!解决了我的问题!没想到这是由康达引起的 (3认同)
  • 大!很有帮助 (2认同)

小智 11

似乎 .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


小智 11

import tensorflow.compat.v1 as tf

tf.disable_v2_behavior() 
Run Code Online (Sandbox Code Playgroud)

作品。我正在使用 Python 3.7 和 tensorflow 2.0。


mah*_*eju 8

我也遇到了同样的错误。可能是因为tensorflow的版本。安装 tensorflow 1.4.0 后,我从错误中解脱出来。

pip install tensorflow==1.4.0
Run Code Online (Sandbox Code Playgroud)


小智 7

避免在 tensorflow=2.0 中使用以下删除语句

进口??t?e?n?s?o?r?f?l?o?w? ?作为??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)

Run Code Online (Sandbox Code Playgroud)


Nih*_*han 5

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

或者您可以通过 pip3 install tensorflow==version 安装以前版本的 tf


Che*_*ana 5

请查看将TensorFlow 1 代码迁移到 TensorFlow 2

这些代码:

import tensorflow as tf
tf_in = tf.placeholder("float", [None, A]) # Features
Run Code Online (Sandbox Code Playgroud)

需要在 TensorFlow 2 中迁移如下:

import tensorflow as tf
import tensorflow.compat.v1 as v1
tf_in = vi.placeholder("float", [None, A]) # Features
Run Code Online (Sandbox Code Playgroud)