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服务器拒绝服务攻击代码
Jan 16 Python
跟老齐学Python之编写类之三子类
Oct 11 Python
Python中使用logging模块打印log日志详解
Apr 05 Python
CentOS中使用virtualenv搭建python3环境
Jun 08 Python
python如何实现int函数的方法示例
Feb 19 Python
Python使用add_subplot与subplot画子图操作示例
Jun 01 Python
Django ORM 常用字段与不常用字段汇总
Aug 09 Python
用Python做一个久坐提醒小助手的示例代码
Feb 10 Python
python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性
Feb 25 Python
Python安装OpenCV的示例代码
Mar 05 Python
Python操作Word批量生成合同的实现示例
Aug 28 Python
python实现扫雷游戏的示例
Oct 20 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
php录入页面中动态从数据库中提取数据的实现
2006/10/09 PHP
使用 eAccelerator加速PHP代码的方法
2007/09/30 PHP
php PDO判断连接是否可用的实现方法
2017/04/03 PHP
php微信开发之关注事件
2018/06/14 PHP
使用jQuery避免鼠标双击的解决方案
2013/08/21 Javascript
如何实现修改密码时密码框显示保存到cookie的密码
2013/12/10 Javascript
js获取字符串最后一位方法汇总
2014/11/13 Javascript
Javascript毫秒数用法实例
2015/02/05 Javascript
JavaScript实现数组在指定位置插入若干元素的方法
2015/04/06 Javascript
javascript字符串循环匹配实例分析
2015/07/17 Javascript
JavaScript如何实现对数字保留两位小数一位自动补零
2015/12/18 Javascript
EasyUi combotree 实现动态加载树节点
2016/04/01 Javascript
JS检测移动端横竖屏的代码
2016/05/30 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
2016/11/26 Javascript
详解基于webpack搭建react运行环境
2017/06/01 Javascript
基于webpack-hot-middleware热加载相关错误的解决方法
2018/02/22 Javascript
在vue项目中优雅的使用SVG的方法实例详解
2018/12/03 Javascript
vue 实现移动端键盘搜索事件监听
2019/11/06 Javascript
微信小程序实现菜单左右联动
2020/05/19 Javascript
[48:00]EG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/29 DOTA
Python实例之wxpython中Frame使用方法
2014/06/09 Python
Python之re操作方法(详解)
2017/06/14 Python
Python简单实现控制电脑的方法
2018/01/22 Python
Centos7 Python3下安装scrapy的详细步骤
2018/03/15 Python
python pandas模块基础学习详解
2019/07/03 Python
python中@property和property函数常见使用方法示例
2019/10/21 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
2020/04/22 Python
python怎么删除缓存文件
2020/07/19 Python
送给他或她的礼物:FUN.com
2018/08/17 全球购物
党员群众路线教育实践活动学习笔记
2014/11/05 职场文书
学术会议通知
2015/04/15 职场文书
小学语文教学反思范文
2016/03/03 职场文书
Redis主从配置和底层实现原理解析(实战记录)
2021/06/30 Redis
SpringBoot工程下使用OpenFeign的坑及解决
2021/07/02 Java/Android
python读取mat文件生成h5文件的实现
2022/07/15 Python