tensorflow 固定部分参数训练,只训练部分参数的实例


Posted in Python onJanuary 20, 2020

在使用tensorflow来训练一个模型的时候,有时候需要依靠验证集来判断模型是否已经过拟合,是否需要停止训练。

1.首先想到的是用tf.placeholder()载入不同的数据来进行计算,比如

def inference(input_):
  """
  this is where you put your graph.
  the following is just an example.
  """
  
  conv1 = tf.layers.conv2d(input_)
 
  conv2 = tf.layers.conv2d(conv1)
 
  return conv2
 
 
input_ = tf.placeholder()
output = inference(input_)
...
calculate_loss_op = ...
train_op = ...
...
 
with tf.Session() as sess:
  sess.run([loss, train_op], feed_dict={input_: train_data})
 
  if validation == True:
    sess.run([loss], feed_dict={input_: validate_date})

这种方式很简单,也很直接了然。

2.但是,如果处理的数据量很大的时候,使用 tf.placeholder() 来载入数据会严重地拖慢训练的进度,因此,常用tfrecords文件来读取数据。

此时,很容易想到,将不同的值传入inference()函数中进行计算。

train_batch, label_batch = decode_train()
val_train_batch, val_label_batch = decode_validation()
 
 
train_result = inference(train_batch)
...
loss = ..
train_op = ...
...
 
if validation == True:
  val_result = inference(val_train_batch)
  val_loss = ..
  
 
with tf.Session() as sess:
  sess.run([loss, train_op])
 
  if validation == True:
    sess.run([val_result, val_loss])

这种方式看似能够直接调用inference()来对验证数据进行前向传播计算,但是,实则会在原图上添加上许多新的结点,这些结点的参数都是需要重新初始化的,也是就是说,验证的时候并不是使用训练的权重。

3.用一个tf.placeholder来控制是否训练、验证。

def inference(input_):
  ...
  ...
  ...
  
  return inference_result
 
 
train_batch, label_batch = decode_train()
val_batch, val_label = decode_validation()
 
is_training = tf.placeholder(tf.bool, shape=())
 
x = tf.cond(is_training, lambda: train_batch, lambda: val_batch)
y = tf.cond(is_training, lambda: train_label, lambda: val_label)
 
logits = inference(x)
loss = cal_loss(logits, y)
train_op = optimize(loss)
 
with tf.Session() as sess:
  
  loss, _ = sess.run([loss, train_op], feed_dict={is_training: True})
  
  if validation == True:
    loss = sess.run(loss, feed_dict={is_training: False})

使用这种方式就可以在一个大图里创建一个分支条件,从而通过控制placeholder来控制是否进行验证。

以上这篇tensorflow 固定部分参数训练,只训练部分参数的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
讲解Python中的递归函数
Apr 27 Python
举例讲解Python中的Null模式与桥接模式编程
Feb 02 Python
详解K-means算法在Python中的实现
Dec 05 Python
Python3读取Excel数据存入MySQL的方法
May 04 Python
详解Python下Flask-ApScheduler快速指南
Nov 04 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
Dec 10 Python
python对绑定事件的鼠标、按键的判断实例
Jul 17 Python
python-序列解包(对可迭代元素的快速取值方法)
Aug 24 Python
python fuzzywuzzy模块模糊字符串匹配详细用法
Aug 29 Python
pycharm激活码有效到2020年11月底
Sep 18 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
May 11 Python
如何用python开发Zeroc Ice应用
Jan 29 Python
如何通过Django使用本地css/js文件
Jan 20 #Python
Python中 Global和Nonlocal的用法详解
Jan 20 #Python
Django后台管理系统的图文使用教学
Jan 20 #Python
解决Pycharm的项目目录突然消失的问题
Jan 20 #Python
Python log模块logging记录打印用法解析
Jan 20 #Python
解决tensorflow训练时内存持续增加并占满的问题
Jan 19 #Python
Tensorflow获取张量Tensor的具体维数实例
Jan 19 #Python
You might like
详解Window7 下开发php扩展
2015/12/31 PHP
PHP模板引擎Smarty中的保留变量用法分析
2016/04/11 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
2016/05/04 PHP
Laravel4中的Validator验证扩展用法详解
2016/07/26 PHP
用函数式编程技术编写优美的 JavaScript
2006/11/25 Javascript
对采用动态原型方式无法展示继承机制得思考
2009/12/04 Javascript
Extjs学习笔记之三 extjs form更多的表单项
2010/01/07 Javascript
ymPrompt的doHandler方法来实现获取子窗口返回值的方法
2010/06/25 Javascript
实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)
2013/01/11 Javascript
自定义右键属性覆盖浏览器默认右键行为实现代码
2013/02/02 Javascript
document.compatMode的CSS1compat使用介绍
2014/04/03 Javascript
jQuery中:lt选择器用法实例
2014/12/29 Javascript
js比较日期大小的方法
2015/05/12 Javascript
JavaScript检测字符串中是否含有html标签实现方法
2015/07/01 Javascript
RequireJS入门一之实现第一个例子
2015/09/30 Javascript
使用plupload自定义参数实现多文件上传
2016/07/19 Javascript
JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
2016/10/30 Javascript
详谈jQuery中使用attr(), prop(), val()获取value的异同
2017/04/25 jQuery
react中实现搜索结果中关键词高亮显示
2018/07/31 Javascript
vue实现树形结构样式和功能的实例代码
2019/10/15 Javascript
[03:58]2014DOTA2国际邀请赛 龙宝赛后解密DK获胜之道
2014/07/14 DOTA
关于Python中异常(Exception)的汇总
2017/01/18 Python
python 处理数字,把大于上限的数字置零实现方法
2019/01/28 Python
Python的条件表达式和lambda表达式实例
2019/01/31 Python
python实现将一维列表转换为多维列表(numpy+reshape)
2019/11/29 Python
在Django下创建项目以及设置settings.py教程
2019/12/03 Python
如何基于python操作excel并获取内容
2019/12/24 Python
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
电子商务专业学生的学习自我评价
2013/10/27 职场文书
建筑设计学生的自我评价
2014/01/16 职场文书
学校节能减排方案
2014/06/13 职场文书
公司试用期员工自我评价
2014/09/17 职场文书
采购员岗位职责范本
2015/04/07 职场文书
2015年英语教研组工作总结
2015/05/23 职场文书
python 如何用terminal输入参数
2021/05/25 Python
教你漂亮打印Pandas DataFrames和Series
2021/05/29 Python