tf.variable_scope
's __init__
method的前两个参数是
name_or_scope
:string
或VariableScope
:要打开的范围。default_name
:如果name_or_scope
参数为None
,此名称将是唯一的。如果提供了name_or_scope
将不会使用,因此不是必需的,可以是None
。
如果我理解正确,则此参数等同于(因此很容易替换为该参数)
if name_or_scope is None:
name_or_scope = default_name
with tf.variable_scope(name_or_scope, ...):
...
现在,我不确定我为什么要对作用域名称进行特殊处理,因为为什么很多参数都可以使用可参数化的默认参数。
那么引入该论点的依据是什么?
答案 0 :(得分:0)
你是对的。这只是一个方便。
以定义为here的TensorFlow模型为例。如果您专门查看InceptionV4.py,您会发现它的定义中有一个范围参数。在下面,您将看到InceptionV4
已作为默认范围传递。因此,完全不需要在定义中甚至包含scope
自变量。但是,如果有人给出scope=None
,这是有道理的。
考虑一下。模型定义可以很快变得非常复杂。因此,default_scope参数有助于增强模型定义编写者的智慧,即使最终用户对此非常幼稚,也可以在模型定义中引入某种有意的结构。