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中的lstrip()方法使用简介
May 19 Python
详解python如何调用C/C++底层库与互相传值
Aug 10 Python
python数据结构链表之单向链表(实例讲解)
Jul 25 Python
python配置grpc环境
Jan 01 Python
详解python中的index函数用法
Aug 06 Python
python 类的继承 实例方法.静态方法.类方法的代码解析
Aug 23 Python
pytorch 彩色图像转灰度图像实例
Jan 13 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
Feb 05 Python
PyTorch笔记之scatter()函数的使用
Feb 12 Python
python日期与时间戳的各种转换示例
Feb 12 Python
python属于解释语言吗
Jun 11 Python
pycharm激活码免费分享适用最新pycharm2020.2.3永久激活
Nov 25 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中创建空文件的代码[file_put_contents vs touch]
2012/01/20 PHP
PHP框架性能测试报告
2016/05/08 PHP
js 判断脚本加载完毕的代码
2011/07/13 Javascript
JQuery与JS里submit()的区别示例介绍
2014/02/17 Javascript
JavaScript中的alert()函数使用技巧详解
2014/12/29 Javascript
详解jQuery中的元素的属性和相关操作
2015/08/14 Javascript
jQuery 如何给Carousel插件添加新的功能
2016/04/18 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
jQuery实现的表格展开伸缩效果实例
2016/09/07 Javascript
js通过keyCode值判断单击键盘上某个键,然后触发指定的事件方法
2017/02/19 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
2019/04/08 Javascript
基于vue3.0.1beta搭建仿京东的电商H5项目
2020/05/06 Javascript
Vue 解决父组件跳转子路由后当前导航active样式消失问题
2020/07/21 Javascript
js异步接口并发数量控制的方法示例
2020/11/22 Javascript
Python的Django框架中的Context使用
2015/07/15 Python
python在不同层级目录import模块的方法
2016/01/31 Python
分享python数据统计的一些小技巧
2016/07/21 Python
python解析json串与正则匹配对比方法
2018/12/20 Python
Python 实现还原已撤回的微信消息
2019/06/18 Python
新年福利来一波之Python轻松集齐五福(demo)
2020/01/20 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
2020/04/08 Python
Python代码中如何读取键盘录入的值
2020/05/27 Python
解决python调用自己文件函数/执行函数找不到包问题
2020/06/01 Python
HTML5 层的叠加的实现
2020/07/07 HTML / CSS
Why do we need Unit test
2013/01/03 面试题
药学专业大学生自荐信
2013/09/28 职场文书
拓展培训心得体会
2014/01/04 职场文书
风险评估实施方案
2014/03/09 职场文书
求职简历自荐信
2014/06/18 职场文书
学校党员对照检查材料
2014/08/28 职场文书
群众路线剖析材料
2014/09/30 职场文书
个人政风行风自查自纠报告
2014/10/21 职场文书
2015年毕业生实习评语
2015/03/25 职场文书
魂断蓝桥观后感
2015/06/10 职场文书
大学生读书笔记范文
2015/07/01 职场文书
Python图片验证码降噪和8邻域降噪
2021/08/30 Python