『TensorFlow』使用集合collection控制variables
Variable
Tensorflow使用Variable
类表达、更新、存储模型参数。
Variable
是在可变更的,具有保持性的内存句柄,存储着Tensor
- 在整个
session
运行之前,图中的全部Variable
必须被初始化Variable
的值在sess.run(init)之后就确定了Tensor
的值要在sess.run(x)之后才确定
- 创建的
Variable
被添加到默认的collection
中
tf.GraphKeys
中包含了所有默认集合的名称,可以通过查看__dict__发现具体集合。
被收集在名为tf.GraphKeys.
GLOBAL_VARIABLES:global_variablestf.GraphKeys.GLOBAL_VARIABLES
的colletion
中,包含了模型中的通用参数
tf.GraphKeys.TRAINABLE_VARIABLES:
tf.Optimizer默认
只优化tf.GraphKeys.TRAINABLE_VARIABLES
中的变量。
函数 | 集合名 | 意义 |
---|---|---|
tf.global_variables() | GLOBAL_VARIABLES |
存储和读取checkpoints时,使用其中所有变量 跨设备全局变量集合 |
tf.trainable_variables() | TRAINABLE_VARIABLES |
训练时,更新其中所有变量 存储需要训练的模型参数的变量集合 |
tf.moving_average_variables() | MOVING_AVERAGE_VARIABLES |
实用指数移动平均的变量集合 |
tf.local_variables() | LOCAL_VARIABLES |
在 进程内本地变量集合 |
tf.model_variables() | MODEL_VARIABLES |
Key to collect model variables defined by layers. 进程内存储的模型参数的变量集合 |
QUEUE_RUNNERS | 并非存储variables,存储处理输入的QueueRunner | |
SUMMARIES | 并非存储variables,存储日志生成相关张量 |
除了上表中的函数外(上表中最后两个集合并非变量集合,为了方便一并放在这里),还可以使用tf.get_collection(集合名)获取集合中的变量,不过这个函数更多与tf.get_collection(集合名)搭配使用,操作自建集合。
另,slim.get_model_variables()与tf.model_variables()功能近似。
Summary
Summary
被收集在名为tf.GraphKeys.
UMMARIES
的colletion
中,
Summary
是对网络中Tensor
取值进行监测的一种Operation
- 这些操作在图中是“外围”操作,不影响数据流本身
- 调用tf.scalar_summary系列函数时,就会向默认的
collection
中添加一个Operation
自定义集合
除了默认的集合,我们也可以自己创造collection
组织对象。网络损失就是一类适宜对象。
tensorflow中的Loss提供了许多创建损失Tensor
的方式。
x1 = tf.constant(1.0)
l1 = tf.nn.l2_loss(x1) x2 = tf.constant([2.5, -0.3])
l2 = tf.nn.l2_loss(x2)
创建损失不会自动添加到集合中,需要手工指定一个collection
:
tf.add_to_collection("losses", l1)
tf.add_to_collection("losses", l2)
创建完成后,可以统一获取所有损失,losses
是个Tensor
类型的list:
losses = tf.get_collection('losses')
一种常见操作把所有损失累加起来得到一个Tensor
:
loss_total = tf.add_n(losses)
执行操作可以得到损失取值:
sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)
losses_val = sess.run(losses)
loss_total_val = sess.run(loss_total)
实际上,如果使用TF-Slim包的losses系列函数创建损失,会自动添加到名为”losses”的collection
中。
『TensorFlow』使用集合collection控制variables的更多相关文章
- 『TensorFlow』专题汇总
TensorFlow:官方文档 TensorFlow:项目地址 本篇列出文章对于全零新手不太合适,可以尝试TensorFlow入门系列博客,搭配其他资料进行学习. Keras使用tf.Session训 ...
- 『TensorFlow』流程控制
『PyTorch』第六弹_最小二乘法对比PyTorch和TensorFlow TensorFlow 控制流程操作 TensorFlow 提供了几个操作和类,您可以使用它们来控制操作的执行并向图中添加条 ...
- 『TensorFlow』滑动平均
滑动平均会为目标变量维护一个影子变量,影子变量不影响原变量的更新维护,但是在测试或者实际预测过程中(非训练时),使用影子变量代替原变量. 1.滑动平均求解对象初始化 ema = tf.train.Ex ...
- 『TensorFlow』梯度优化相关
tf.trainable_variables可以得到整个模型中所有trainable=True的Variable,也是自由处理梯度的基础 基础梯度操作方法: tf.gradients 用来计算导数.该 ...
- 『TensorFlow』SSD源码学习_其一:论文及开源项目文档介绍
一.论文介绍 读论文系列:Object Detection ECCV2016 SSD 一句话概括:SSD就是关于类别的多尺度RPN网络 基本思路: 基础网络后接多层feature map 多层feat ...
- 『TensorFlow』模型保存和载入方法汇总
『TensorFlow』第七弹_保存&载入会话_霸王回马 一.TensorFlow常规模型加载方法 保存模型 tf.train.Saver()类,.save(sess, ckpt文件目录)方法 ...
- 『TensorFlow』SSD源码学习_其五:TFR数据读取&数据预处理
Fork版本项目地址:SSD 一.TFR数据读取 创建slim.dataset.Dataset对象 在train_ssd_network.py获取数据操作如下,首先需要slim.dataset.Dat ...
- 『TensorFlow』分布式训练_其三_多机分布式
本节中的代码大量使用『TensorFlow』分布式训练_其一_逻辑梳理中介绍的概念,是成熟的多机分布式训练样例 一.基本概念 Cluster.Job.task概念:三者可以简单的看成是层次关系,tas ...
- 『TensorFlow』DCGAN生成动漫人物头像_下
『TensorFlow』以GAN为例的神经网络类范式 『cs231n』通过代码理解gan网络&tensorflow共享变量机制_上 『TensorFlow』通过代码理解gan网络_中 一.计算 ...
随机推荐
- oracle日期格式化
TO_CHAR(t.CAMERA_CREAT_TIME, 'YYYY-MM-DD HH24:MI:SS') as point_registerdate,TO_CHAR(t.CAMERA_MODIFY_ ...
- Java学习-049-正则工具类
自去年九月份决定再次入学和职业资格进阶,开始备战二者考试至今,以及当下进行中的职称申请,犹如孤独的狼,不断前行在路上,而今凡凡总总的已历8月... 不感慨了,如下为一园友需要的正则工具类,直接上码: ...
- 一个少女心满满的例子带你入门canvas
https://blog.csdn.net/sunshine940326/article/details/76572850 本文首发于我的个人博客:http://cherryblog.site/ gi ...
- (转)git 忽略规则
对于经常使用Git的朋友来说,.gitignore配置一定不会陌生.废话不说多了,接下来就来说说这个.gitignore的使用. 首先要强调一点,这个文件的完整文件名就是".gitignor ...
- 关于Java中StringBuffer的capacity问题
从API查到capacity的作用是查看StringBuffer的容器容量是多少,刚开始纳闷这个跟length的区别在哪?试验了几次感觉有点不解.所以直接跟进源码分析. 直接通过new StringB ...
- vue 之iview
iView-admin2.0:https://admin.iviewui.com/ 组件:https://www.iviewui.com/docs/guide/install
- svn更新项目之后,项目报错一大堆并且tomcat部署项目时找不到项目
原因是:svn更新项目以后jdk路劲不对,需要使用自己安装的jdk,即可.具体步骤如下 第一步:右击项目-->Build path-->Configure Build path... 第二 ...
- JSP 修改不能编辑
JSP做修改功能时候,有的时候,某些值要设置成只读状态,不能修改,刚开始做的时候,出现了修改之后值传不到后台的情况,由于刚出来工作不久,不是很了解这个.思索了半天,才发现是由于这个属性的缘故.浪费了大 ...
- 禁止chrome浏览器的缓冲图片以及css等资源文件
今天做了一个动画的效果,在ff下正常 但是到了谷歌下就不正常了,非常郁闷,看了下是缓存的问题 ,于是度娘了一下发现清理缓存的技巧还是满多的,这里借鉴一下别人的总结,人的大脑有限,下次忘记的时候还可以在 ...
- MVC输出缓存(OutputCache参数详解)
版权声明:本文为博主原创文章,未经博主允许转载随意. https://blog.csdn.net/kebi007/article/details/59199115 1.学习之前你应该知道这些 几乎每个 ...