【发布时间】:2020-04-17 13:12:18
【问题描述】:
我想知道是否可以将模块导入自己的模块的方式参数化。
我的问题如下。我有许多通用的 tensorflow 函数,例如损失函数,它们适用于 API 的两个版本(1 和 2)。
如果模块是配合TF2使用的,或者配合老版本的TF1,需要像这样导入tensorflow
import tensorflow as tf
但是如果我使用 TF 1.15,或者如果我想使用 TF2 的 API 版本 1,则需要将 tensorflow 导入为
import tensorflow.compat.v1 as tf
tf.disable_v1_behavior()
所以导入的方式不能从TF版本中自动推断出来,因为TF2可以在TF1“兼容”模式下使用。
有没有办法改变模块中的导入方式?
似乎适用于直接导入的模块的 hack:
import my_module
my_module.tf = tf
这会强制tf 模块与当前模块相同。然而,
这可能会产生不可见且难以跟踪的副作用,因为导入 tensorflow 时可能需要不同的 API,这可能会弄乱任何全局变量设置。
这适用于直接导入的模块,不适用于由其他模块导入的模块,除非该 hack 传播到所有模块。
【问题讨论】:
标签: python tensorflow