tensorflow的变量作用域

一、由来

深度学习中需要使用大量的变量集,以往写代码我们只需要做全局限量就可以了,但在tensorflow中,这样做既不方便管理变量集,有不便于封装,因此tensorflow提供了一种变量管理方法:变量作用域机制

 

二、两个重要API

tf.get_variable(name, shape=None)        # 根据给定的名字创建或返回一个变量

tf.variable_scope(name_or_scope, reuse=None)  # 将name_or_scope下的所有变量组成一个命名空间  

 

三、解读

先说第一个API

tf.get_variable(name, shape=None)这个方法在建立变量时与tf.Variable()完全相同,区别在于它还会搜索是否有同名变量;

1 import tensorflow as tf
2 
3 
4 with tf.variable_scope('const'):
5     a = tf.get_variable('a', [1], initializer=tf.constant_initializer(1.))

 

 

再说第二个API

这个方法最重要的参数时reuse,有三个取值:None、True、tf.AUTO_REUSE

reuse = None:继承父类的reuse标志

reuse = True:只能复用,不能创建

复制代码
 1 import tensorflow as tf
 2 
 3 
 4 with tf.variable_scope('const'):
 5     a = tf.get_variable('a', [1])
 6 
 7 with tf.variable_scope('const', reuse=tf.AUTO_REUSE):
 8     b = tf.get_variable('a', [1])
 9 
10 print(a==b)     # True
复制代码

reuse = tf.AUTO_REUSE:没有就创建,有了就复用,这是最安全的用法

复制代码
 1 import tensorflow as tf
 2 
 3 
 4 def test():
 5     with tf.variable_scope('const', reuse=tf.AUTO_REUSE):
 6         a = tf.get_variable('a', [1])
 7 
 8     return a
 9 
10 x = test()  # 没有就创建
11 y = test()  # 有了就复用
12 print(x==y)     # True
复制代码

 

posted @   帅帅的飞猪  阅读(1141)  评论(0编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 开发者新选择:用DeepSeek实现Cursor级智能编程的免费方案
· Tinyfox 发生重大改版
· 独立开发经验谈:如何通过 Docker 让潜在客户快速体验你的系统
· 小米CR6606,CR6608,CR6609 启用SSH和刷入OpenWRT 23.05.5
· 近期最值得关注的AI技术报告与Agent综述!
点击右上角即可分享
微信分享提示