【问题标题】:Tensorflow VariableScope: original_name_scope vs nameTensorflow VariableScope:original_name_scope vs name
【发布时间】:2017-01-20 04:20:50
【问题描述】:

在 TensorFlow 中,VariableScope 类同时具有 original_name_scopename 属性。它们有什么区别,我什么时候应该使用另一种?我似乎找不到太多关于它们的文档。

用例: 我正在使用tf.get_collection(key, scope) 方法。它的第二个参数需要一个字符串,但我的变量my_scope 的类型为VariableScope。我都在尝试

tf.get_collection(key, my_scope.name)

tf.get_collection(key, my_scope.original_scope_name)

。两者似乎都有效,但我不确定哪个是“正确的”,以后不会给我带来问题。

【问题讨论】:

    标签: python scope tensorflow


    【解决方案1】:

    foo.name 返回作用域的名称(字符串)。另一方面,foo.original_name_scope 返回与foo.name 相同的字符串,除非重新创建范围。在这种情况下,所有子作用域都根据需要附加_#,以使对foo.original_name_scope 的所有调用都为作用域的每个实例返回唯一的内容。

    例如,在这段代码中:

    with tf.variable_scope('a') as a:
        print(a.name)
        print(a.original_name_scope)
        print(a.original_name_scope)
    
    with tf.variable_scope('a') as b:
        print(b.name)
        print(b.original_name_scope)
    

    返回

    a
    a/
    a/
    a
    a_1/
    

    请注意,对original_name_scope 的调用对应于不同的作用域实例a 返回不同的值。

    大概,这可以让您区分具有相同名称的不同范围实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-12
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多