为什么我们需要张量名称

时间:2017-11-15 15:48:03

标签: tensorflow

想象一下,我有一个我想要重复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

1 个答案:

答案 0 :(得分:2)

所以,如果你没有说出一个名字,那么它就会覆盖或者替换这个值。 TF提出了自己的命名约定,如const_1,const_2等。

至少有一个名称参数有用的原因是因为TensorBoard使用它。此参数用于TF命名空间(与Python命名空间相对 - 因此TF忽略变量名称)。

因此,当您有多次迭代时,该命名约定将用于命名不同的名称。

WRT如何使用它,有几种方法可以做到这一点 - 你已经输入了一些。另一种方法是使用"范围" - 这样您的TB(TensorBoard)图形看起来更整洁,更易于管理。至少从TB的角度来看,使用范围也是可选的。