reuse的取值有3个:
- None:使用父容器(作用域)的reuse值,若没有父容器,则是变量创建模式,即若变量已存在则报错
- True:变量复用,若变量还没有创建,则报错
- tf.AUTO_REUSE:变量复用,若变量还没创建,则创建变量后复用
变量复用需要配合tf.get_variable()
使用,为什么不用tf.Variable()
呢?
因为tf.Variable()
每次都会新建变量,如果第二次创建的变量名和第一次的相同,这tf.Variable()
会自动对第二次的进行重命名处理。例如
a1 = tf.Variable(1,name="var_name",dtype=tf.float32)
a2 = tf.Variable(1,name="var_name",dtype=tf.float32)
print(a1.name,"---",a2.name)
结果是:var_name:0 --- var_name_1:0
可以看到,第二个变量在其后自动加上的_1
以示区分