%tensorflow_version 1.x
import tensorflow as tf
print(tensorflow.__version__)
w = tf.Variable(0, dtype = tf.float32)
cost = w**2 - 8*w + 16
train = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(cost)
init = tf.global_variables_initializer()
session = tf.Session()
session.run(init)
for i in range(1000):
session.run(train)
print(session.run(w))
#3.994
我用谷歌搜索了一下,但没有得到任何结论这个程序计算多项式的因子,当我使用tf-vr-2时,它给了我一个错误,缺少var_list,我也修复了,但后来它给出了更多的错误
从TF1到TF2的几个变化:
- 优化器现在在
keras
模块中,但有一个别名tf.optimizers
可以使用。GradientDescentOptimizer
可以被SGD
代替,没有动量 会话对象不再被使用。相反,默认是即时执行,更接近于编写标准python代码的方式。 @tf.function
装饰器可用于将函数跟踪到图形中,从而提高性能。这不是强制性的。- 全局状态在TF2中不太常见,不需要
init
操作。
迁移指南可能会有所帮助。
import tensorflow as tf
w = tf.Variable(0, dtype = tf.float32)
@tf.function
def cost():
return w**2 - 8*w + 16
train = tf.optimizers.SGD(learning_rate=0.01)
for i in range(1000):
train.minimize(loss=cost, var_list=[w])
print(w)
import tensorflow as tf
w = tf.Variable(0, dtype = tf.float32)
@tf.function
def cost():
return w**2 - 8*w + 16
train = tf.compat.v1.train.GradientDescentOptimizer(learning_rate=0.01)
for i in range(1000):
train.minimize(loss=cost, var_list=[w])
tf.print(w)