tf.compat的作用是什么?

时间:2019-10-30 18:08:57

标签: tensorflow

tf.compat模块的目的是什么?似乎整个Tensorflow API都已在该模块中复制。 文档说明

  

Python 2与3兼容性的功能。

那么为什么会有一个“ v1”和一个“ v2”子模块? tf.compat具体解决了哪些兼容性问题?

1 个答案:

答案 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版本兼容性。