一 实例描述
在作用域下,可以使用get_variable和嵌套variable_scope。
get_variable创建两个同样名字的变量是行不通的,如下代码会报错。
var1 = tf.get_variable("firstvar",shape=[2],dtype=tf.float32)
var2 = tf.get_variable("firstvar",shape=[2],dtype=tf.float32)如果真的想这么做,可以使用variable_scope将它们隔开,见下面代码
二 代码
import tensorflow as tf
tf.reset_default_graph()
#var1 = tf.get_variable("firstvar",shape=[2],dtype=tf.float32)
#var2 = tf.get_variable("firstvar",shape=[2],dtype=tf.float32)
with tf.variable_scope("test1", ):
var1 = tf.get_variable("firstvar",shape=[2],dtype=tf.float32)
with tf.variable_scope("test2"):
var2 = tf.get_variable("firstvar",shape=[2],dtype=tf.float32)
print ("var1:",var1.name)
print ("var2:",var2.name)三 运行结果
var1: test1/firstvar:0
var2: test2/firstvar:0
四 说明
var1和var2都使用firstvar的名字来定义。通过输出可以看出,其生成的两个变量var1和var2是不同的,它们作用在不同的scope下,这就是scope的作用。
scope还支持嵌套,见下面代码。
五 代码
import tensorflow as tf
tf.reset_default_graph()
#var1 = tf.get_variable("firstvar",shape=[2],dtype=tf.float32)
#var2 = tf.get_variable("firstvar",shape=[2],dtype=tf.float32)
with tf.variable_scope("test1", ):
var1 = tf.get_variable("firstvar",shape=[2],dtype=tf.float32)
with tf.variable_scope("test2"):
var2 = tf.get_variable("firstvar",shape=[2],dtype=tf.float32)
print ("var1:",var1.name)
print ("var2:",var2.name)六 运行结果
var1: test1/firstvar:0
var2: test1/test2/firstvar:0
本文介绍TensorFlow中如何利用作用域(scope)管理和创建不同变量。通过实例展示如何避免重复变量名导致的错误,并演示了如何在同一作用域下正确创建多个同名变量。

356

被折叠的 条评论
为什么被折叠?



