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 22 Python
Python爬虫之pandas基本安装与使用方法示例
Aug 08 Python
Python OpenCV中的resize()函数的使用
Jun 20 Python
用Python调用win命令行提高工作效率的实例
Aug 14 Python
pytorch 可视化feature map的示例代码
Aug 20 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
Sep 10 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
Feb 10 Python
3种适用于Python的疯狂秘密武器及原因解析
Apr 29 Python
Django在Model保存前记录日志实例
May 14 Python
python用opencv完成图像分割并进行目标物的提取
May 25 Python
Python pexpect模块及shell脚本except原理解析
Aug 03 Python
python SOCKET编程基础入门
Feb 27 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
浅析SVN常见问题及解决方法
2013/06/21 PHP
php中如何防止表单的重复提交
2013/08/02 PHP
学习php过程中的一些注意点的总结
2013/10/25 PHP
PHP中对于浮点型的数据需要用不同的方法解决
2014/03/11 PHP
THINKPHP2.0到3.0有哪些改进之处
2015/01/04 PHP
PHP上传文件参考配置大文件上传
2015/12/16 PHP
PHP实现的下载远程文件类定义与用法示例
2017/07/05 PHP
tp5框架基于Ajax实现列表无刷新排序功能示例
2020/02/10 PHP
jquery 1.4.2发布!主要是性能与API
2010/02/25 Javascript
JS对外部文件的加载及对IFRMAME的加载的实现,当加载完成后,指定指向方法(方法回调)
2011/07/04 Javascript
AngularJs html compiler详解及示例代码
2016/09/01 Javascript
nodejs服务搭建教程 nodejs访问本地站点文件
2017/04/07 NodeJs
Angular2环境搭建具体操作步骤(推荐)
2017/08/04 Javascript
微信小程序左滑删除功能开发案例详解
2018/11/12 Javascript
详解jQuery中的getAll()和cleanData()
2019/04/15 jQuery
原生js实现ajax请求和JSONP跨域请求操作示例
2020/03/14 Javascript
理解JavaScript中的Proxy 与 Reflection API
2020/09/21 Javascript
vue 使用vant插件做tabs切换和无限加载功能的实现
2020/11/04 Javascript
[01:30:54]《加油DOTA》 第三期
2014/08/18 DOTA
[48:48]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
深入解析Python中的WSGI接口
2015/05/11 Python
深入学习Python中的上下文管理器与else块
2017/08/27 Python
python获取文件真实链接的方法,针对于302返回码
2018/05/14 Python
使用python将多个excel文件合并到同一个文件的方法
2019/07/09 Python
Python从文件中读取指定的行以及在文件指定位置写入
2019/09/06 Python
使用CSS3在触屏上为按钮实现激活效果
2013/09/27 HTML / CSS
加拿大女包品牌:Matt & Nat
2017/05/12 全球购物
美国高档百货Nordstrom的折扣店:Nordstrom Rack
2017/11/13 全球购物
英国布鲁姆精品店:Bloom Boutique
2018/03/01 全球购物
学校节能宣传周活动总结
2014/07/09 职场文书
父母教会我观后感
2015/06/17 职场文书
2015大一新生军训感言
2015/08/01 职场文书
数学备课组工作总结
2015/08/12 职场文书
评估“风险”创业计划的几大要点
2019/08/12 职场文书
学会用Python实现滑雪小游戏,再也不用去北海道啦
2021/05/20 Python
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL