【问题标题】:module 'tensorflow_core._api.v2.train' has no attribute 'GradientDescentOptimizer' and 'Tensor' object is not callable in Tensorflow 2.0 on python模块“tensorflow_core._api.v2.train”没有属性“GradientDescentOptimizer”和“Tensor”对象在 python 上的 Tensorflow 2.0 中不可调用
【发布时间】:2020-11-01 06:52:10
【问题描述】:

我在 tensorflow 2.0 中的这段代码有一个问题:


import tensorflow as tf
import numpy as np

w=tf.Variable(0, dtype=tf.float32)
cost=tf.add( tf.add(w**2,tf.multiply(-10.,w)),25)
#cost=w**2-10*w+25
train= tf.train.GradientDescentOptimizer(0.01).minimize(cost)import tensorflow as tf
import numpy as np

------------------------------
Output:
---> 10 train= tf.train.GradientDescentOptimizer(0.01).minimize(cost)

AttributeError: module 'tensorflow_core._api.v2.train' has no attribute 'GradientDescentOptimizer'

然后我尝试使用:tf.optimizers.SGD(0.01).minimize(cost)

import tensorflow as tf
import numpy as np

w=tf.Variable(0, dtype=tf.float32)
cost=tf.add( tf.add(w**2,tf.multiply(-10.,w)),25)
#cost=w**2-10*w+25

train= tf.optimizers.SGD(0.01).minimize(cost,var_list=[w])



TypeError: 'Tensor' object is not callable

请帮帮我,我正在学习 tensorflow。

【问题讨论】:

标签: python tensorflow keras tensorflow2.0


【解决方案1】:

我能够在 TF 2.x 中复制您的错误

import tensorflow as tf
import numpy as np

w=tf.Variable(0, dtype=tf.float32)
cost=tf.add( tf.add(w**2,tf.multiply(-10.,w)),25)
#cost=w**2-10*w+25
train= tf.train.GradientDescentOptimizer(0.01).minimize(cost)

输出:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-31-392f437c54ca> in <module>()
      5 cost=tf.add( tf.add(w**2,tf.multiply(-10.,w)),25)
      6 #cost=w**2-10*w+25
----> 7 train= tf.train.GradientDescentOptimizer(0.01).minimize(cost)

AttributeError: module 'tensorflow._api.v2.train' has no attribute 'GradientDescentOptimizer'

为了在 TF2.x 中运行您的代码,首先您必须使用 tf.compat.v1.disable_v2_behavior() 禁用 V2 行为,并将 tf.train.GradientDescentOptimizer 替换为 tf.compat.v1.train.GradientDescentOptimizer

下面的工作代码

import tensorflow as tf
import numpy as np

tf.compat.v1.disable_v2_behavior()

w=tf.Variable(0, dtype=tf.float32)
cost=tf.add( tf.add(w**2,tf.multiply(-10.,w)),25)
#cost=w**2-10*w+25
train= tf.compat.v1.train.GradientDescentOptimizer(0.01).minimize(cost)

在 TF 2.3 中,要实现梯度下降,您可以使用 tf.keras.optimizers.SGD

【讨论】:

    【解决方案2】:

    你应该修改

    optimizer = tf.train.GradientDescentOptimizer
    

    成为

    optimizer = tf.compat.v1.train.GradientDescentOptimizer
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-05
      • 2021-10-08
      • 1970-01-01
      • 2020-04-03
      • 1970-01-01
      • 1970-01-01
      • 2020-07-29
      相关资源
      最近更新 更多