tensorflow中使用变量作用域及tf.variable(),tf,getvariable()与tf.variable_scope()的用法
一 .tf.variable() 在模型中每次调用都会重建变量,使其存储相同变量而消耗内存,如:
def repeat_value():
weight=tf.variable(tf.random_normal([5,5,6]),name='weight')
return weight
如果多次调用函数如:
result1=repeat_value()
result2=repeat_value() # 重复调用
将会重复创建一份变量,却保存相同模型参数。若使用字典可以解决此类问题,却破坏模型封装性(有关字典解决此问题,可留言回复)。
二 . tf.get_variable()与tf.variable_scope()方法可以解决上面问题,其中前者负责创建或获取指定名称的变量,后者负责传入tf.get_variable()方法的变量名称的名字空间。
def a(input,kernel_shape):
w=tf.get_variable('w',kernel_shape,initializer=tf.random_normal()) #创建获取名叫w的变量
conv=tf.nn.conv2d(input,w,strides=[1,1,1,1],padding='SAME')
return conv def b(img):
with tf.variable_scope("conv1"): #创建conv1/w变量
r1=a(img,[5,5,32,32])
with tf.variable_scope("conv2"): #创建conv2/w变量
r2=a(r1,[5,5,32,32])
return r2
# with上下文中定义的变量都会加上tf.variable_scope方法中定义的前缀,这样能够通过不同的变量作用域区分同类网络的不同参数。
# 但第二次调用函数b(),tf.get_variable()就会抛出变量已存在,无法解决复用问题。因此,需要加上reuse=True,如下: def b(img):
with tf.variable_scope("conv1",reuse=True): #创建conv1/w变量
r1=a(img,[5,5,32,32])
with tf.variable_scope("conv2",reuse=True): #创建conv2/w变量
r2=a(r1,[5,5,32,32])
return r2
# 更改后可以反复调用了。 三.共享作用域下的初始化(类似c++类中的继承):
with tf.variable_scope("conv1",initializer=tf.constant_initializer(0.8)): #创建conv1/w变量
w=tf.get_variable('w',[1]) #此处使用外围的initializer=tf.constant_initializer(0.8)初始化
w1 = tf.get_variable('w1', [1,2], initializer=tf.random_normal()) # 此处覆盖initializer=tf.constant_initializer(0.8)初始化,
# 使用本身initializer=tf.random_normal()初始化。 with tf.variable_scope("conv2"): #嵌套conv1下的作用域
w2 = tf.get_variable('w2', [1,2]) #此处使用外围的initializer=tf.constant_initializer(0.8)初始化(类似继承)
w1 = tf.get_variable('w1', [1,2], tf.constant_initializer(0.4)) # 此处覆盖initializer=tf.constant_initializer(0.8)初始化,
# 使用本身tf.constant_initializer(0.4)初始化。
tensorflow中使用变量作用域及tf.variable(),tf,getvariable()与tf.variable_scope()的用法的更多相关文章
- TensorFlow中的变量和常量
1.TensorFlow中的变量和常量介绍 TensorFlow中的变量: import tensorflow as tf state = tf.Variable(0,name='counter') ...
- 深度学习原理与框架-Tensorflow基本操作-Tensorflow中的变量
1.tf.Variable([[1, 2]]) # 创建一个变量 参数说明:[[1, 2]] 表示输入的数据,为一行二列的数据 2.tf.global_variables_initializer() ...
- Tensorflow中的变量
从初识tf开始,变量这个名词就一直都很重要,因为深度模型往往所要获得的就是通过参数和函数对某一或某些具体事物的抽象表达.而那些未知的数据需要通过学习而获得,在学习的过程中它们不断变化着,最终收敛达到较 ...
- 2、Tensorflow中的变量
2.Tensorflow中的变量注意:tf中使用 变量必须先初始化下面是一个使用变量的TF代码(含注释): # __author__ = "WSX" import tensorfl ...
- 83、Tensorflow中的变量管理
''' Created on Apr 21, 2017 @author: P0079482 ''' #如何通过tf.variable_scope函数来控制tf.ger_variable函数获取已经创建 ...
- TensorFlow中的变量命名以及命名空间.
What: 在Tensorflow中, 为了区别不同的变量(例如TensorBoard显示中), 会需要命名空间对不同的变量进行命名. 其中常用的两个函数为: tf.variable_scope, t ...
- javascript中的变量作用域以及变量提升
在javascript中, 理解变量的作用域以及变量提升是非常有必要的.这个看起来是否很简单,但其实并不是你想的那样,还要一些重要的细节你需要理解. 变量作用域 “一个变量的作用域表示这个变量存在的上 ...
- php学习笔记4--php中的变量作用域
变量作用域:可以简单地理解为变量的可见区域,变量能被访问的范围.如同其他语言,php中也有全局作用域和局部作用域之分,但是不同的是:php中的全局作用域指的是:只能在函数外部使用,而局部作用域指的是: ...
- javascript中的变量作用域以及变量提升详细介绍
在javascript中, 理解变量的作用域以及变量提升是非常有必要的.这个看起来是否很简单,但其实并不是你想的那样,还要一些重要的细节你需要理解变量作用域 “一个变量的作用域表示这个变量存在的上下文 ...
随机推荐
- The Preliminary Contest for ICPC Asia Shenyang 2019 H. Texas hold'em Poker
题目链接:https://nanti.jisuanke.com/t/41408 题目意思很简单,就是个模拟过程. #include <iostream> #include <cstr ...
- wordpress中文目录出现“有点尴尬诶!该页无法显示"
原因不详,可能是.htaccess.网上说删除后再更新固定链接会再生成,但是我没有.我又把原来的.htaccess上传后更改固定链接为“数字型”,测试后可以正常浏览. 然后又再更改为原来的“日期和名称 ...
- 05-cmake语法-message()
输出错误 message(FATAL_ERROR " FATAL: In-source builds are not allowed. You should create a separat ...
- Spring AOP技术本质认识
Spring AOP技术本质认识 一.AOP简介 AOP(Aspect Oriented Programming,面向切面编程),把某一类问题集中在一个地方进行处理,比如处理程序中的点击事件.打印 ...
- Spring Data Elasticsearch 聚合查询
如需要统计某件商品的数量,最高价格,最低价格等就用到了聚合查询,就像数据库中的group by 首先需要注入ElasticsearchTemplate @Autowired private Elast ...
- USACO Cow Frisbee Team
洛谷 P2946 [USACO09MAR]牛飞盘队Cow Frisbee Team 洛谷传送门 JDOJ 2632: USACO 2009 Mar Silver 2.Cow Frisbee Team ...
- 使用 Docker-Compose 编排容器
我们知道使用一个 Dockerfile 模板文件可以定义一个单独的应用容器,如果需要定义多个容器就需要服务编排.服务编排有很多种技术方案,今天给大家介绍 Docker 官方产品 Docker Comp ...
- Invalid connection string format, a valid format is: "host:port:sid"
报错信息: Caused by: java.sql.SQLException: Io 异常: Invalid connection string format, a valid format is: ...
- div垂直居中水平居中css
width: 860px; height: 500px; position: absolute; margin-left: -430px; margin-top: -250px; top: 50%; ...
- 【树形DP】【P3177】[HAOI2015] 树上染色
Description 给定一棵 \(n\) 个点的带权树,要求选 \(k\) 个点染成黑色,剩下染成白色,最大化两两同色点之间的距离和. Limitations \(0 \leq k \leq n ...