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 29 Python
Python字符串处理函数简明总结
Apr 13 Python
Python简单操作sqlite3的方法示例
Mar 22 Python
详解Python核心对象类型字符串
Feb 11 Python
Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
Feb 23 Python
解决python删除文件的权限错误问题
Apr 24 Python
Linux系统(CentOS)下python2.7.10安装
Sep 26 Python
Python随机生成身份证号码及校验功能
Dec 04 Python
Python实现序列化及csv文件读取
Jan 19 Python
学习Python列表的基础知识汇总
Mar 10 Python
为什么说python适合写爬虫
Jun 11 Python
详解Python3 定义一个跨越多行的字符串的多种方法
Sep 06 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
极典R601SW收音机
2021/03/02 无线电
php md5下16位和32位的实现代码
2008/04/09 PHP
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
2014/04/08 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
2017/10/13 PHP
原型方法的不同写法居然会影响调试的解决方法
2007/03/08 Javascript
javascript中最常用的继承模式 组合继承
2010/08/12 Javascript
Extjs 3.3切换tab隐藏相应工具栏出现空白解决
2013/04/02 Javascript
JS跨域问题详解
2014/11/25 Javascript
JavaScript生成的动态下雨背景效果实现方法
2015/02/25 Javascript
贴近用户体验的Jquery日期、时间选择插件
2015/08/19 Javascript
JavaScript实现自定义媒体播放器方法介绍
2017/01/03 Javascript
jQuery用户头像裁剪插件cropbox.js使用详解
2017/06/07 jQuery
VUE元素的隐藏和显示(v-show指令)
2017/06/23 Javascript
基于JavaScript实现五子棋游戏
2020/08/26 Javascript
JS简单生成由字母数字组合随机字符串示例
2018/05/25 Javascript
深入理解redux之compose的具体应用
2020/01/12 Javascript
vue实现标签云效果的示例
2020/11/09 Javascript
vue监听滚动事件的方法
2020/12/21 Vue.js
Python中运行并行任务技巧
2015/02/26 Python
Python3利用SMTP协议发送E-mail电子邮件的方法
2017/09/30 Python
在Tensorflow中实现梯度下降法更新参数值
2020/01/23 Python
Python selenium抓取虎牙短视频代码实例
2020/03/02 Python
Python configparser模块封装及构造配置文件
2020/08/07 Python
Original Penguin美国官网:布拉德皮特、强尼德普喜爱的服装品牌
2016/10/25 全球购物
英国高档百货连锁店:John Lewis
2017/11/20 全球购物
夜大毕业生自我鉴定
2013/10/31 职场文书
营销专业应届生求职信
2013/11/26 职场文书
肯尼迪就职演说稿
2013/12/31 职场文书
霸王洗发水广告词
2014/03/14 职场文书
医学生求职信
2014/07/01 职场文书
教师群众路线剖析材料
2014/09/29 职场文书
2014年幼儿园园长工作总结
2014/12/17 职场文书
五四青年节活动总结
2015/02/10 职场文书
教务处教学工作总结
2015/08/10 职场文书
2016寒假社会实践心得体会范文
2015/10/09 职场文书
Docker容器harbor私有仓库部署和管理
2022/08/05 Servers