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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?