【问题标题】:Warning During upgrading a Tensorflow 1 code to Tensorflow 2 code将 Tensorflow 1 代码升级到 TensorFlow 2 代码期间的警告
【发布时间】:2020-10-28 07:29:53
【问题描述】:
我正在尝试将现有的 TF1 代码转换为 google colab 上的 TF2 代码。运行命令后,我收到 14 条警告消息:!tf_upgrade_v2 --infile medgan.py --outfile medgan_upgraded.py
警告:tf.get_variable 需要手动检查。 tf.get_variable 在 2.0 中默认返回 ResourceVariables,它具有明确定义的语义并且对形状更严格。您可以通过传递 use_resource=False 或调用 tf.compat.v1.disable_resource_variables() 来禁用此行为。
我是 tensorflow 的新手,不知道这个命令是什么意思。在保存升级的 .py 文件之前,我的下一步应该是什么?我应该担心这些警告吗? TF 通过这个警告告诉我该怎么做?谢谢。
【问题讨论】:
标签:
python
tensorflow
google-colaboratory
tensorflow2.0
【解决方案1】:
使用自动化脚本将代码从 Tensorflow 1.x 迁移到 Tensorflow 2.x 只会执行初始传递。但在此过程中,您需要注意有很多东西不属于Tensorflow 2.x 实现,例如placeholders、sessions、collections、tf.contrib,以及其他1.x 功能,包括variables 行为的变化。
首先,让我告诉你tf.get_variable和tf.Variable之间的区别。
tf.get_variable 从图中获取具有指定参数的现有变量,如果它不存在,则创建一个新变量,而 tf.Variable 将始终创建一个新变量,即使传递了相同的名称,Tensorflow将使用后缀 variable_name_1 分配新名称。
在Tensorflow 2.x 中使用tf.Variable 默认创建一个资源变量,默认情况下启用急切执行。
除非您在使用变量时遇到问题,否则您不必担心此警告。
如果你想禁用资源变量tf.compat.v1.disable_resource_variables() 被贬值,你可以在tf.get_variable() 中使用use_resource= False,当Tensorflow 2.x 默认启用急切执行时,它将被强制为true。
您可以从 Tensorflow 的 this 文档中查看迁移代码期间要进行的所有其他更改和观察。