【发布时间】:2019-10-30 12:36:30
【问题描述】:
作为我们迁移到 TensorFlow 2 的一部分,我想在 TensorFlow v1(特别是 TensorFlow 1.14)中启用 TensorFlow v2 行为。我知道我可以调用 tf.enable_v2_behavior() 来执行此操作,但我想隐式执行此操作(通过环境变量或类似的方法),而不必显式调用此函数。
我想这样做的原因是人们不要忘记这样做,并且不要意外地以 v1 行为结束。我可以确保在运行任何测试之前调用tf.enable_v2_behavior(),但是在测试环境之外我们代码的底层行为可能会有所不同(测试可能会通过,但是在测试环境之外运行时代码会失败)。
任何环境变量都可能有效,因为我几乎可以保证在我们所有的 docker 镜像中都设置了它,但我对替代方案持开放态度。我可以在导入特定模块时执行此操作,但我不能保证始终会导入特定模块(tensorflow! 除外)。
enable_v2_behavior 的文档状态“此函数在主 TensorFlow __init__.py 文件中调用,用户不需要调用它,除非在复杂迁移期间。”,但这似乎不是真的(在至少在 TensorFlow 1.14 中;我猜 TensorFlow 2.0 也是如此)。
【问题讨论】:
-
您可以编辑安装好的tensorflow
__init__文件,或者编辑房间包中的__init__调用该函数。 -
@MadPhysicist 我不会更改 TensorFlow 的
__init__文件。假设您的意思是“自己的包”,我不能保证总是会导入特定的包。 -
这是一个公共项目吗?我很想看到你的代码,或者阅读你的这种转变的经历。另请参阅my related question。
-
@Albert 抱歉,不公开
标签: python tensorflow