我正在尝试在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告诉我该警告怎么办?谢谢。
答案 0 :(得分:1)
使用自动脚本将代码从Tensorflow 1.x
迁移到Tensorflow 2.x
只会进行初始遍历。但是在此过程中,您需要注意,Tensorflow 2.x
实现中不包含许多内容,例如placeholders
,sessions
,collections
,t {{1 }}和其他1.x功能,包括f.contrib
的行为更改。
首先,让我告诉您variables
和tf.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文档中,您可以看到在迁移代码期间进行的所有其他更改和观察。