2019-03-14

关于tensorflow中的reuse=True ,or,False

在tf.variable_scope()函数中,设置reuse=False时,在其命名空间"foo"中执行函数get_variable()时,表示创建变量"v",若在该命名空间中已经有了变量"v",则在创建时会报错

设置reuse=True时,函数get_variable()表示获取变量如下列

import tensorflow as tf

with tf.variable_scope("foo"):

    v=tf.get_variable("v",[1],initializer=tf.constant_initializer(1.0))


with tf.variable_scope("foo",reuse=True):

    v1=tf.get_variable("v",[1])

print(v1==v)

结果为:

True

在tf.variable_scope()函数中,设置reuse=True时,在其命名空间"foo"中执行函数get_variable()时,表示获取变量"v"。若在该命名空间中还没有该变量,则在获取时会报错,如下面的例子

import tensorflow as tf

with tf.variable_scope("foo",reuse=True):

    v1=tf.get_variable("v",[1])


ValueError                                Traceback (most recent call last)

in ()

      2

      3 with tf.variable_scope("foo",reuse=True):

----> 4    v1=tf.get_variable("v",[1])

      5

ValueError: Variable foo/v does not exist, or was not created with tf.get_variable().

Did you mean to set reuse=tf.AUTO_REUSE in VarScope?

TensorFlow通过tf. get_variable()和tf.variable_scope()两个函数,可以创建多个并列的或嵌套的命名空间,用于存储神经网络中的各层的权重、偏置、学习率、滑动平均衰减率、正则化系数等参数值,神经网络不同层的参数可放置在不同的命名空间中。同时,变量重用检错和读取不存在变量检错两种机制保证了数据存放的安全性。

你可能感兴趣的:(2019-03-14)