为什么tf.variable_scope具有default_name参数?

时间:2018-09-10 11:08:10

标签: python tensorflow

tf.variable_scope's __init__ method的前两个参数是

  
      
  • name_or_scopestringVariableScope:要打开的范围。
  •   
  • 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, ...):
  ...

现在,我不确定我为什么要对作用域名称进行特殊处理,因为为什么很多参数都可以使用可参数化的默认参数。

那么引入该论点的依据是什么?

1 个答案:

答案 0 :(得分:0)

你是对的。这只是一个方便。

以定义为here的TensorFlow模型为例。如果您专门查看InceptionV4.py,您会发现它的定义中有一个范围参数。在下面,您将看到InceptionV4已作为默认范围传递。因此,完全不需要在定义中甚至包含scope自变量。但是,如果有人给出scope=None,这是有道理的。

考虑一下。模型定义可以很快变得非常复杂。因此,default_scope参数有助于增强模型定义编写者的智慧,即使最终用户对此非常幼稚,也可以在模型定义中引入某种有意的结构。