模块'tensorflow_core._api.v2.train'没有属性'GradientDescentOptimizer'并且'Tensor'对象在python的Tensorflow 2.0中不可调用

时间:2020-07-11 18:02:19

标签: python tensorflow keras tensorflow2.0

我在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

请帮助我,我正在学习张量流。

2 个答案:

答案 0 :(得分:0)

我能够在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

答案 1 :(得分:0)

您应该修改

optimizer = tf.train.GradientDescentOptimizer

成为

optimizer = tf.compat.v1.train.GradientDescentOptimizer