如何在tensorflow版本2中转换以下内容?


%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)

相关内容

  • 没有找到相关文章

最新更新