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 urlopen()函数 示例分享
Jun 12 Python
python实现从字符串中找出字符1的位置以及个数的方法
Aug 25 Python
跟老齐学Python之从if开始语句的征程
Sep 14 Python
python实现下载整个ftp目录的方法
Jan 17 Python
Python新手入门最容易犯的错误总结
Apr 24 Python
numpy下的flatten()函数用法详解
May 27 Python
Django 多表关联 存储 使用方法详解 ManyToManyField save
Aug 09 Python
详解使用Python下载文件的几种方法
Oct 13 Python
浅谈Python类中的self到底是干啥的
Nov 11 Python
python中提高pip install速度
Feb 14 Python
PyQt5 界面显示无响应的实现
Mar 26 Python
如何使用Python实现一个简易的ORM模型
May 12 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
PHP4 与 MySQL 数据库操作函数详解
2006/10/09 PHP
WEB页子窗口(showModalDialog和showModelessDialog)使用说明
2009/10/25 Javascript
深入理解JavaScript系列(16) 闭包(Closures)
2012/04/12 Javascript
技术男用来对妹子表白的百度首页
2014/07/23 Javascript
jquery中checkbox全选失效的解决方法
2014/12/26 Javascript
javascript二维数组转置实例
2015/01/22 Javascript
关于cookie的初识和运用(js和jq)
2016/04/07 Javascript
chrome浏览器如何断点调试异步加载的JS
2016/09/05 Javascript
jQuery 检查某个元素在页面上是否存在实例代码
2016/10/27 Javascript
jQuery设计思想
2017/03/07 Javascript
关于vue.extend和vue.component的区别浅析
2017/08/16 Javascript
JavaScript创建对象的七种方式全面总结
2017/08/21 Javascript
基于jquery.page.js实现分页效果
2018/01/01 jQuery
js隐式转换的知识实例讲解
2018/09/28 Javascript
vue实现微信分享链接添加动态参数的方法
2019/04/29 Javascript
vue.js 实现a标签href里添加参数
2019/11/12 Javascript
vue远程加载sfc组件思路详解
2019/12/25 Javascript
[01:14]2019完美世界城市挑战赛(秋季赛)全国总决赛精彩花絮
2020/01/08 DOTA
Python切片知识解析
2016/03/06 Python
python画出三角形外接圆和内切圆的方法
2018/01/25 Python
PyCharm在新窗口打开项目的方法
2019/01/17 Python
Pycharm 2020.1 版配置优化的详细教程
2020/08/07 Python
conda安装tensorflow和conda常用命令小结
2021/02/20 Python
编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的
2015/07/23 面试题
初中音乐教学反思
2014/01/12 职场文书
单位消防安全制度
2014/01/12 职场文书
大学生职业生涯规划范文
2014/01/22 职场文书
餐饮部总监岗位职责范文
2014/02/13 职场文书
机械操作工岗位职责
2014/08/08 职场文书
校长创先争优承诺书
2014/08/30 职场文书
2015年财务人员工作总结
2015/04/10 职场文书
百年校庆感言
2015/08/01 职场文书
2016年学校党支部公开承诺书
2016/03/25 职场文书
动画「半妖的夜叉姬」新BD特典图公开
2022/03/22 日漫
python 离散点图画法的实现
2022/04/01 Python
Python使用BeautifulSoup4修改网页内容
2022/05/20 Python