tf.compat模块的目的是什么?似乎整个Tensorflow API都已在该模块中复制。 文档说明
Python 2与3兼容性的功能。
那么为什么会有一个“ v1”和一个“ v2”子模块? tf.compat具体解决了哪些兼容性问题?
答案 0 :(得分:1)
tf.compat
允许您编写在TensorFlow 1.x和2.x中均可使用的代码。例如,以下代码:
import tensorflow as tf
tf.compat.v1.disable_v2_behavior()
with tf.compat.v1.Session() as sess:
x = tf.compat.v1.placeholder(tf.float32, [2])
x2 = tf.square(x)
print(sess.run(x2, feed_dict={x: [2, 3]}))
# [4. 9.]
在TensorFlow 1.15.0和2.0.0上运行相同的操作,即使会话和占位符在2.x中已弃用。同样,tf.compat.v2
允许您使用1.x中2.x引入的功能。而且,这些API也为将来提供了向后兼容性,因此,如果在某个时候发布了3.x版本,则从2.x的第一个版本开始就已经存在编写与版本无关的代码的机制。
编辑:有关Python的模块的文档实际上应该进行更改。最初,tf.compat
仅为此目的而保留功能(直到1.13,see all module documentation才是如此)。但是,后来将其重新用于TensorFlow版本兼容性。