【问题标题】:TensorFlow, "'module' object has no attribute 'placeholder'"TensorFlow,“‘模块’对象没有属性‘占位符’”
【发布时间】: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吗?

标签: python machine-learning tensorflow


【解决方案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 个步骤,它开始工作没有问题:

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

                        conda remove tensorflow-gpu tensorflow tensorflow-base

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

                        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 模块。

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

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

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

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

                                  【讨论】:

                                  • 相关:我遇到了一个问题(tensorflow 0.9),脚本停止工作:“AttributeError: 'module' object has no attribute 'constant'”。感谢这个答案,我查看并注意到我有一个名为“tensorflow”的文件夹。我重命名了那个文件夹,我的脚本又可以工作了。
                                  • 非常有用,它救了我的命!
                                  • 超级好用:D
                                  • 那么你应该如何导入它呢?
                                  • @Sherzod 我想我已经展示了解决方案(粗体):不要使用“tensorflow”作为文件名。
                                  猜你喜欢
                                  • 2020-07-20
                                  • 2017-03-23
                                  • 1970-01-01
                                  • 2018-01-26
                                  • 1970-01-01
                                  • 2018-04-18
                                  • 1970-01-01
                                  • 2020-10-17
                                  • 1970-01-01
                                  相关资源
                                  最近更新 更多