我目前正在阅读基于Tensorflow的slim库的源代码,他们对values
方法使用variable_scope
参数,例如here。
从API页面我可以看到:
此上下文管理器验证(可选)值来自同一图表,确保图形是默认图形,并推送名称范围和变量范围。
我的问题是:来自values
的变量是否仅来自同一图表?有什么用例以及为什么有人需要它?
答案 0 :(得分:4)
variable_scope参数有助于确保变量的唯一性,并在需要时重用变量。
是的,如果您创建两个或更多不同的计算图表,那么它们不一定共享相同的变量范围;但是,有一些方法可以让它们在图形之间共享,因此选项就在那里。
变量范围的主要用例适用于RNN,其中许多权重被绑定并重用。这是某人需要它的一个原因。它的另一个主要原因是确保您在明确表示而非意外时重复使用相同的变量。 (对于分布式设置,这可能会成为一个问题。)