TF版本1.0.0中tf.variable_scope的行为差异

时间:2017-02-16 20:39:06

标签: tensorflow

如果使用相同名称定义变量并且tf.variable_scope参数未设置为reuse,则True之前会发生错误。这在TF 1.0.0中似乎不再适用。以下最小示例显示了这一点:

import tensorflow as tf
from tensorflow.contrib import layers
print(tf.__version__)

def net(in_data, reuse=None):
    with tf.variable_scope("foo", reuse=reuse):
        return layers.conv2d(in_data, 3, 3)

in_data = tf.random_uniform([10, 40, 30, 3])
out_data1 = net(in_data)
out_data2 = net(in_data, reuse=None)
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    rval = sess.run([out_data1, out_data2])

TF ver 0.12.0给出以下错误:

  

ValueError:变量foo / Conv / weights已经存在,不允许。你的意思是在VarScope中设置reuse = True吗?

TF ver 1.0.0执行时没有错误。这是行为的预期变化吗?如果是这样,如何在1.0版本中引发这种类型的错误?

请注意,此效果似乎与tf.contrib.layerstf.contrib.slim相关联。 tf.layers没有显示相同的问题。为什么???

0 个答案:

没有答案