为什么我得到 AttributeError: module 'tensorflow' has no attribute 'placeholder'?

use*_*799 7 tensorflow

三周前我能够运行我的 python 程序,但现在每次我尝试运行它时,我都会收到以下错误:

AttributeError: module 'tensorflow' has no attribute 'placeholder'
Run Code Online (Sandbox Code Playgroud)

我安装了 tensorflow(版本“2.0.0-alpha0”)。我已经阅读了几篇与此问题相关的帖子。他们说我应该卸载 TensorFlow 并重新安装它。问题是我在集群计算机上运行它并且我没有sudo权限。

任何的想法?

mru*_*ova 10

包含tensorflow compat v1库后:

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

使用 v1 语法如下:

X = tf.compat.v1.placeholder(dtype="float",shape=[None, n_H0, n_W0, n_C0])
Y = tf.compat.v1.placeholder(dtype="float",shape=[None, n_y]) 
Run Code Online (Sandbox Code Playgroud)


Vis*_*ati 7

在 Tensorflow 2.0 中,没有占位符。您需要将 TF1.x 代码更新为 TF2.0 代码,然后在您的集群上运行它。请查看有关将 TF1.x 代码转换为 TF2.0的官方文档

在 TF1.x 代码中,您可以使用占位符、常量、变量构建 tensorflow 图(静态图)。然后,使用 tf.session() 命令在会话中运行代码。在该会话期间,您为占位符提供值并执行静态图。

在 TF2.0 中,模型会在您输入命令时急切地运行。这更像pythonic。在此处查看有关 TF 2.0 的更多详细信息。谢谢!


Nel*_*ieK 5

除了@Vishnuvardhan Janapati 的答案之外,您还可以将文件夹(“*TREE”)和/或文件更新到 TensorFlow 版本 2。升级工具tf_upgrade_v2自动包含在 TensorFlow 1.13 及更高版本中。

tf_upgrade_v2 [-h] [--infile INPUT_FILE] [--outfile OUTPUT_FILE]
                   [--intree INPUT_TREE] [--outtree OUTPUT_TREE]
                   [--copyotherfiles COPY_OTHER_FILES] [--inplace]
                   [--reportfile REPORT_FILENAME] [--mode {DEFAULT,SAFETY}]
                   [--print_all]
Run Code Online (Sandbox Code Playgroud)

转换如何修复“占位符”错误的说明:

在此输入图像描述

注意:这修复了类似的投诉module 'tensorflow' has no attribute 'xxxxx'(不仅仅是“占位符”)。