TensorFlow为什么我们已经拥有函数tf.variable_scope时仍然使用tf.name_scope

时间:2019-02-15 06:03:41

标签: python tensorflow

我不明白为什么我们已经有了tf.name_scope时也需要功能tf.variable_scope。从Tensorflow官方API中,我看到tf.variable_scope的功能更强大,因为它可以对tf.get_variable产生影响。当我们创建图层并希望共享变量时,我们总是使用tf.variable_scopetf.name_scope。但是,我尝试从Nvidia在GitHub上发布的代码中学到一些新知识。我发现编码人员经常使用tf.name_scope。为什么我们仍然需要此功能?

1 个答案:

答案 0 :(得分:0)

您可以使用App Owns Data在用tf.variable_scope和操作创建的两个变量上添加前缀:正如您所说,这还允许变量共享,但它也使第一个调用tf.get_variable在此范围内的新变量的定义。

tf.get_variable仅在操作中添加前缀 :使用tf.name_scopetf.name_scope外部定义的变量没有前缀,因此tf.get_variable被忽略完全针对此变量:您不会以任何方式声明前缀。

当您想创建一个使用在其外部声明的变量的操作块(使用tf.name_scope)时,这很有用。该变量甚至可以同时被多个操作块使用。