警告在将Tensorflow 1代码升级到Tensorflow 2代码期间

时间:2020-07-07 23:45:13

标签: python tensorflow google-colaboratory tensorflow2.0

我正在尝试在Google colab上将现有的TF1代码转换为TF2代码。运行命令后,我得到14条警告消息:!tf_upgrade_v2 --infile medgan.py --outfile medgan_upgraded.py

警告:tf.get_variable需要手动检查。在2.0中,tf.get_variable默认情况下返回ResourceVariables,它们具有定义明确的语义并且对形状更严格。您可以通过传递use_resource = False或调用tf.compat.v1.disable_resource_variables()来禁用此行为。

我是tensorflow的新手,不确定该命令的含义。保存升级的.py文件之前,下一步应该做什么?我应该担心这些警告吗? TF告诉我该警告怎么办?谢谢。

1 个答案:

答案 0 :(得分:1)

使用自动脚本将代码从Tensorflow 1.x迁移到Tensorflow 2.x只会进行初始遍历。但是在此过程中,您需要注意,Tensorflow 2.x实现中不包含许多内容,例如placeholderssessionscollections,t {{1 }}和其他1.x功能,包括f.contrib的行为更改。

首先,让我告诉您variablestf.get_variable之间的区别。

tf.Variable从图形中获取一个具有指定参数的现有变量,如果不存在,它将创建一个新变量,而tf.get_variable将始终创建一个新变量,即使同名通过后,Tensorflow将为新名称分配后缀 variable_name _1。

tf.Variable中使用Tensorflow 2.x创建一个Resource变量作为默认值,并且默认情况下急切执行。

除非您在变量使用中遇到行为,否则您不必担心此警告。 如果要禁用资源变量tf.Variable,则可以在tf.compat.v1.disable_resource_variables()中使用use_resource= False,而在tf.get_variable()中默认启用急切执行时,该变量将被强制为true。

从Tensorflow的this文档中,您可以看到在迁移代码期间进行的所有其他更改和观察。