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检测生僻字的实现方法
Oct 23 Python
关于Python 3中print函数的换行详解
Aug 08 Python
Python 装饰器实现DRY(不重复代码)原则
Mar 05 Python
python2.7无法使用pip的解决方法(安装easy_install)
Apr 03 Python
python读取csv文件并把文件放入一个list中的实例讲解
Apr 27 Python
python实现txt文件格式转换为arff格式
May 31 Python
在Qt5和PyQt5中设置支持高分辨率屏幕自适应的方法
Jun 18 Python
python通过txt文件批量安装依赖包的实现步骤
Aug 13 Python
Python递归调用实现数字累加的代码
Feb 25 Python
使用python matploblib库绘制准确率,损失率折线图
Jun 16 Python
详解python程序中的多任务
Sep 16 Python
python在linux环境下安装skimage的示例代码
Oct 14 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 智能404跳转代码,适合换域名没改变目录的网站
2010/06/04 PHP
Yii2框架使用计划任务的方法
2016/05/25 PHP
php 猴子摘桃的算法
2017/06/20 PHP
详解CSS样式中的 !important * _ 符号
2021/03/09 HTML / CSS
IE8提示Invalid procedure call or argument 异常的解决方法
2012/09/30 Javascript
js页面跳转的常用方法整理
2013/10/18 Javascript
单击某一段文字改写文本颜色
2014/06/06 Javascript
javascript中数组array及string的方法总结
2014/11/28 Javascript
深入理解jQuery之防止冒泡事件
2016/05/24 Javascript
jquery插件锦集【推荐】
2016/12/16 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
JavaScript异步上传图片文件的实例代码
2017/07/04 Javascript
微信小程序 确认框的实现(附代码)
2019/07/23 Javascript
js生成1到100的随机数最简单的实现方法
2020/02/07 Javascript
openlayers4实现点动态扩散
2020/08/17 Javascript
解决Antd Table组件表头不对齐的问题
2020/10/27 Javascript
[01:03:42]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
apache部署python程序出现503错误的解决方法
2017/07/24 Python
Python基础练习之用户登录实现代码分享
2017/11/08 Python
python自动发邮件库yagmail的示例代码
2018/02/23 Python
Java与Python两大幸存者谁更胜一筹呢
2018/04/12 Python
对python实现合并两个排序链表的方法详解
2019/01/23 Python
python3多线程知识点总结
2019/09/26 Python
Python网络编程之使用TCP方式传输文件操作示例
2019/11/01 Python
python检查目录文件权限并修改目录文件权限的操作
2020/03/11 Python
重写django的model下的objects模型管理器方式
2020/05/15 Python
Python脚本破解压缩文件口令实例教程(zipfile)
2020/06/14 Python
Spartoo葡萄牙鞋类网站:线上销售鞋履与时尚配饰
2017/01/11 全球购物
Casetify官网:自制专属手机壳、iPad护壳和Apple Watch手表带
2018/05/09 全球购物
美国户外烹饪产品购物网站:Outdoor Cooking
2020/01/10 全球购物
十八大演讲稿
2014/05/22 职场文书
跳蚤市场口号
2014/06/13 职场文书
邀请函模板
2015/02/02 职场文书
保护地球的宣传语
2015/07/13 职场文书
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
2021/05/17 Python
Python使用psutil库对系统数据进行采集监控的方法
2021/08/23 Python