tensorflow学习笔记(十五): variable scope
来源:互联网 发布:教育数据质量管理系统 编辑:程序博客网 时间:2024/05/22 12:00
variable scope
tensorflow 为了更好的管理变量,提供了variable scope机制
官方解释:
Variable scope object to carry defaults to provide to get_variable.
Many of the arguments we need for get_variable in a variable store are most easily handled with a context. This object is used for the defaults.
Attributes:
- name: name of the current scope, used as prefix in get_variable.
- initializer: 传给get_variable的默认initializer.如果get_variable的时候指定了initializer,那么将覆盖这个默认的initializer.
- regularizer: 传给get_variable的默认regulizer.
- reuse: Boolean or None, setting the reuse in get_variable.
- caching_device: string, callable, or None: the caching device passed to get_variable.
- partitioner: callable or None: the partitioner passed to get_variable.
- custom_getter: default custom getter passed to get_variable.
- name_scope: The name passed to tf.name_scope.
- dtype: default type passed to get_variable (defaults to DT_FLOAT).
regularizer
参数的作用是给在本variable_scope
下创建的weights
加上正则项.这样我们就可以不同variable_scope
下的参数加不同的正则项了.
可以看出,用variable scope管理get_varibale是很方便的
如何确定 get_variable 的 prefixed name
首先, variable scope是可以嵌套的:
with variable_scope.variable_scope("tet1"): var3 = tf.get_variable("var3",shape=[2],dtype=tf.float32) print var3.name with variable_scope.variable_scope("tet2"): var4 = tf.get_variable("var4",shape=[2],dtype=tf.float32) print var4.name#输出为****************#tet1/var3:0#tet1/tet2/var4:0#*********************
get_varibale.name 以创建变量的 scope
作为名字的prefix
def te2(): with variable_scope.variable_scope("te2"): var2 = tf.get_variable("var2",shape=[2], dtype=tf.float32) print var2.name def te1(): with variable_scope.variable_scope("te1"): var1 = tf.get_variable("var1", shape=[2], dtype=tf.float32) return var1 return te1() #在scope te2 内调用的res = te2()print res.name#输出*********************#te2/var2:0#te2/te1/var1:0#************************
观察和上个程序的不同
def te2(): with variable_scope.variable_scope("te2"): var2 = tf.get_variable("var2",shape=[2], dtype=tf.float32) print var2.name def te1(): with variable_scope.variable_scope("te1"): var1 = tf.get_variable("var1", shape=[2], dtype=tf.float32) return var1 return te1() #在scope te2外面调用的res = te2()print res.name#输出*********************#te2/var2:0#te1/var1:0#************************
还有需要注意一点的是tf.variable_scope("name")
与 tf.variable_scope(scope)
的区别,看下面代码
代码1
import tensorflow as tfwith tf.variable_scope("scope"): tf.get_variable("w",shape=[1])#这个变量的name是 scope/w with tf.variable_scope("scope"): tf.get_variable("w", shape=[1]) #这个变量的name是 scope/scope/w# 这两个变量的名字是不一样的,所以不会产生冲突
代码2
import tensorflow as tfwith tf.variable_scope("yin"): tf.get_variable("w",shape=[1]) scope = tf.get_variable_scope()#这个变量的name是 scope/w with tf.variable_scope(scope):#这种方式设置的scope,是用的外部的scope tf.get_variable("w", shape=[1])#这个变量的name也是 scope/w# 两个变量的名字一样,会报错
共享变量
共享变量的前提是,变量的名字是一样的,变量的名字是由变量名
和其scope
前缀一起构成, tf.get_variable_scope().reuse_variables()
是允许共享当前scope
下的所有变量。reused variables
可以看同一个节点
其它
tf.get_variable_scope()
:获取当前scope tf.get_variable_scope().reuse_variables()
共享变量
- tensorflow学习笔记(十五): variable scope
- tensorflow学习笔记: variable scope
- tensorflow学习笔记(十七):name&variable scope
- tensorflow:name&variable scope
- 转载!tensorflow name scope和variable scope
- tensorflow 学习笔记14 scope命名方式
- tensorflow 学习笔记2 session与Variable
- TensorFlow学习笔记(六)Variable变量
- tensorflow学习笔记:variable与get_variable
- Tensorflow学习:Variable变量
- tensorflow学习---Variable
- tensorflow学习笔记(二十三):variable与get_variable
- Tensorflow编程学习笔记(1)_Session、Variable、Fetch和Feed
- tensorflow学习笔记(二十五):ConfigProto&GPU
- (转载)tensorflow学习笔记(二十五):ConfigProto&GPU
- tensorflow学习笔记十五:tensorflow官方文档学习 TensorBoard: Embedding Visualization
- tensorflow学习笔记十五:tensorflow官方文档学习 TensorBoard: Graph Visualization
- tensorflow学习笔记十五:tensorflow官方文档学习 Logging and Monitoring Basics with tf.contrib.learn
- Kettle使用资源库情况下批量更新邮件组件相关信息
- 安卓3秒后自动执行
- Android AudioFocus以及MediaFocuControl处理流程
- Word2007中公式和文字混排,文字和公式总是没法对齐
- BZOJ2219: 数论之神
- tensorflow学习笔记(十五): variable scope
- 杂记
- linux系统常用的下载指令
- 编程实践6—Elasticsearch5.0 最新版本安装问题
- 第十周项目2-二叉树遍历的递归算法
- C语言 基本输入输出函数
- java调用oracle12c数据库
- 第九周项目2-对称矩形压缩储存的实现与应用(1)
- Android攻城狮—全套必备神级工具(开发,插件,效率)