想象一下,我有一个我想要重复K次的图层:
{conv - relu - pool} x K
在这种情况下,我需要迭代运行第K层的正向传递:
for k in range(len(K)):
Wk = ...
bk = ...
conv = tf.nn.conv2d(pool, Wk, ...) + bk
如果我错过了'name'参数 - 我的conv张量会在每次迭代时被替换吗?正确的变体是:
for k in range(len(K)):
Wk = ...
bk = ...
name='conv%d' % (k)
conv = tf.nn.conv2d(name=name, pool, Wk, ...) + bk
答案 0 :(得分:2)
所以,如果你没有说出一个名字,那么它就会覆盖或者替换这个值。 TF提出了自己的命名约定,如const_1,const_2等。
至少有一个名称参数有用的原因是因为TensorBoard使用它。此参数用于TF命名空间(与Python命名空间相对 - 因此TF忽略变量名称)。
因此,当您有多次迭代时,该命名约定将用于命名不同的名称。
WRT如何使用它,有几种方法可以做到这一点 - 你已经输入了一些。另一种方法是使用"范围" - 这样您的TB(TensorBoard)图形看起来更整洁,更易于管理。至少从TB的角度来看,使用范围也是可选的。