TensorFlow在特定的作用域下获取变量

本文介绍TensorFlow中如何利用作用域(scope)管理和创建不同变量。通过实例展示如何避免重复变量名导致的错误,并演示了如何在同一作用域下正确创建多个同名变量。
一 实例描述
在作用域下,可以使用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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值