Python编程之tf.variable_scope()的用法,包你永不退还知识

从字面上理解,就是变量的作用域管理器;

首先运行一个例子,然后在研究里面的代码

import tensorflow as tf
with tf.variable_scope("tjn"):
    with tf.variable_scope("czj"):
        m=tf.get_variable("v",[12])
        assert m.name == "tjn/czj/v:0"

 

tf.variable_scope()是我们要研究的用法,不知道是什么意思,没关系;

tf.get_variable()是什么意思?

例子:tf.get_variable("v")获取v的变量,如果变量名为v的变量没有就创建,有的话就引用;

assert又是什么意思?

是断言,判断真假,如果为真就不报错继续执行,如果为假就抛出异常;

 

整个代码是判断m的变量作用域的名称是"tjn/czj/v:0"还是"tjn/czj/v:1"?

 

tj 

 

现在是不是感觉有点懂了?


 没关系,继续往下看

import tensorflow as tf
with tf.variable_scope("one"):
    o=tf.get_variable("f",[1])
with tf.variable_scope("two"):
    o1=tf.get_variable("f",[1])
assert o == o1
print("想等...")

你觉得是输出相等....还是抛出异常!

o与o1的变量名与值都是一样的,但是变量的作用域名不一样;我断定抛出异常

 

 如果判断不相等,那么肯定能输出来后面的信息

 


 现在我们来理解,tf.variable_scope()的意义,在大项目中,变量很多,第114行有一个v的变量,第339行又出现了v的变量,后面写代码都晕了,搞不清楚。怎么办?搞一个变量管理器,即使变量名一样,但是变量作用域不一样,引用的时候就不会出现穿插问题了,方便代码的维护;


我们现在再来看看一个例子:

在一个变量作用域中,出现了两个变量名与值都一样的o与o1,两个的作用域也一样;

是不是意味着o与o1相等呢?

import tensorflow as tf
with tf.variable_scope("one"):
    o=tf.get_variable("f",[1])
    o1=tf.get_variable("f",[1])

结果如下

 

 百度了,一个变量的作用域名名不能一样,除非作用域设置了可重复使用,也就是reuse=tf.AUTO_REUSE

 

 

  • 39
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值