tf.variable_scope 和 tf.name_scope 的区别

这两个函数不仅名称相近,功能上也差不多,不过name_scope的使用范围更小,一般我们都选择variable_scope,下面说下这两个的区别。

我们知道在TensorFlow中每个变量都有自己的作用域,我们常常用作用域+变量名来作为这个变量独一无二的名称。那么,这两个函数就是为了实现这样的功能的。请看下面代码:

import tensorflow as tf

with tf.variable_scope('Cvpr'):
    var_1 = tf.Variable(0,name='Best_paper')
with tf.name_scope('Eccv'):
    var_2 = tf.Variable(1,name='Best_paper')

sess = tf.Session()
sess.run(tf.initialize_all_variables())
print('var_1 name is',var_1.name)
print('var_2 name is',var_2.name)

结果如下:

var_1 name is Cvpr/Best_paper:0
var_2 name is Eccv/Best_paper:0

注意看,每一个变量之前都scope名称。

那么他们究竟有什么区别呢?这就涉及到另一个函数:tf.get_variable()

import tensorflow as tf

with tf.name_scope('Cvpr'):
    var_1 = tf.get_variable('Best_paper',[1])
with tf.variable_scope('Eccv'):
    var_2 = tf.get_variable('Best_paper',[])

print('var_1 name is',var_1.name)
print('var_2 name is',var_2.name)

请看输出:

var_1 name is Best_paper:0
var_2 name is Eccv/Best_paper:0

var_1这变量使用get_variable生成的,可以看出get_variable不收tf.name_scope管制。

其实对于大部分TensorFlow使用者,知道name_scope和variable_scope仅仅这一点区别就足够用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值