在这个回答中,我了解到Variable
和get_variable
之间的区别,但随后我又遇到了另一种获取或创建变量的方法,即model_variable,这让我困惑于何时使用get_variable
,何时选择model_variable
。
根据文档,我知道:
get_variable:
获取具有这些参数的现有变量或创建一个新的变量。
model_variable:
获取具有这些参数的现有模型变量或创建一个新的变量。
我从这个问题中看到:
返回MODEL_VARIABLES集合中的所有变量。
那么,get_variable和model_variable函数之间的唯一区别是否在于它们所属的集合?
回答:
据我所知,是的。查看model_variable
在GitHub上的源代码,model_variable
是对variable
(在链接的模块中定义)的封装,而variable
本身是对get_variable
的封装。
这个回答似乎证实了这一点,而这个Google Groups的讨论提供了关于为什么tf.contrib
中有看似重复的函数的见解,特别是这个函数。
至于使用哪个,可能是始终使用tf.get_variable
,除非你正在与slim或其他明确要求使用它的东西集成。我自己从未使用过model_variable
。
编辑:澄清variable
是在链接中定义的,而不是tf.Variable
。