什么是"重用" tf.contrib.layers函数的参数?

时间:2017-01-18 07:07:03

标签: tensorflow

在使用某些tf.contrib.layers功能时,我发现“重复使用”#39;函数的参数不像我想的那样工作。

我认为它的行为类似于"重用"参数tf.variable_scope。 因此,我认为如果我第一次尝试将该函数与reuse=True一起使用,或者如果我尝试将它与reuse=False一起用于之前已经使用过的情况,则会引发错误。

但是,在以下情况下似乎不会发出任何异常:

# The first case
av = np.random.randn(3, 4, 5)
a = tf.Variable(av)
with tf.variable_scope('foo'):
    x = tf.contrib.layers.linear(a, 10, scope='bar', reuse=False)
    y = tf.contrib.layers.linear(a, 10, scope='bar', reuse=False)
sess = tf.Session()
tf.global_variables_initializer().run(session=sess)
xv, yv = sess.run([x, y])
np.allclose(xv, yv)  # True

# The second case
av = np.random.randn(3, 4, 5)
a = tf.Variable(av)
with tf.variable_scope('baz'):
    x = tf.contrib.layers.linear(a, 10, scope='qux', reuse=True)  # don't emit an error

在内部使用Dense类的其他函数中也会出现相同的现象。 它似乎忽略了reuse参数,并且如果变量的名称相同,则始终共享参数。这是故意还是错误?

1 个答案:

答案 0 :(得分:0)

此问题很可能是由于bug that was fixed in early 2017造成的。更新到1.1或更高版本应解决此问题。