TensorFlow 2.0 语法变更

Posted

技术标签:

【中文标题】TensorFlow 2.0 语法变更【英文标题】:Tensorflow 2.0 syntax change 【发布时间】:2021-10-29 01:42:26 【问题描述】:

我想运行以下几行代码,它是基于 tensorflow 1.0 语法编写的:

import tensorflow as tf
a = tf.constant(5)
b = tf.constant(2)
c = tf.constant(3)
d = tf.multiply(a,b)
e = tf.add(b,c)
f = tf.subtract(d,e)

with tf.Session() as sess:
    fetches = [a,b,c,d,e,f]
    outs = sess.run(fetches)
    print("outs=".format(outs))

但它打印出错误消息说明:

module 'tensorflow' has no attribute 'Session'

又查了一下,好像tensorflow 2.0已经不支持session了,https://www.tensorflow.org/guide/effective_tf2

问题是我并不真正理解文档,因为它看起来很复杂,那么我可以在上面的代码中实现哪些更改以在 tensorflow 1.0 中获得相同的输出?希望能得到一些帮助。

【问题讨论】:

我认为你应该试试tf.compat.v1,这是将代码从 tf1.0 迁移到 2.0 的简单方法 【参考方案1】:

尝试使用tf.compat.v1.Session 代替Session 除此之外还有更多疑问可以参考tensorflow https://www.tensorflow.org/api_docs/python/tf/compat/v1/Session

【讨论】:

请添加更多详细信息以扩展您的答案,例如工作代码或文档引用。 This 似乎是同一个问题。【参考方案2】:

这是migration document之后的更新代码

import tensorflow.compat.v1 as tf
tf.compat.v1.disable_v2_behavior()
a = tf.constant(5)
b = tf.constant(2)
c = tf.constant(3)
d = tf.multiply(a,b)
e = tf.add(b,c)
f = tf.subtract(d,e)

with tf.Session() as sess:
    fetches = [a,b,c,d,e,f]
    outs = sess.run(fetches)
    print("outs=".format(outs))

【讨论】:

以上是关于TensorFlow 2.0 语法变更的主要内容,如果未能解决你的问题,请参考以下文章

在open cv2 python中使用Tensor flow 2.0对象的方法是啥,为啥这么迂回?

TensorFlow实战——入门与实现前馈神经网络

TensorFlow实现XOR

建议在 tensorflow 2.0 中调试 `tf.data.Dataset` 操作

上线俩月,TensorFlow 2.0被吐槽太难用,网友:看看人家PyTorch

[我只是简单地输入了tf.Tensor Tensorflow 2.2.0中给出的代码,这是我的代码:请为错误提供解决方案