我在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
请帮助我,我正在学习张量流。
答案 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