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 运算符 供重载参考
Jun 11 Python
Python版微信红包分配算法
May 04 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
Mar 29 Python
python调用摄像头显示图像的实例
Aug 03 Python
对python Tkinter Text的用法详解
Oct 11 Python
python根据时间获取周数代码实例
Sep 30 Python
自适应线性神经网络Adaline的python实现详解
Sep 30 Python
python numpy 矩阵堆叠实例
Jan 17 Python
Python filter过滤器原理及实例应用
Aug 18 Python
利用python清除移动硬盘中的临时文件
Oct 28 Python
Python根据字符串调用函数过程解析
Nov 05 Python
教你漂亮打印Pandas DataFrames和Series
May 29 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截取指定2个字符之间字符串的方法
2015/04/15 PHP
php求数组全排列,元素所有组合的方法总结
2017/03/14 PHP
Fixie.js 自动填充内容的插件
2012/06/28 Javascript
js获取height和width的方法说明
2013/01/06 Javascript
javascript中负数算术右移、逻辑右移的奥秘探索
2013/10/17 Javascript
js使用栈来实现10进制转8进制与取除数及余数
2014/06/11 Javascript
JavaScript检查某个function是否是原生代码的方法
2014/08/20 Javascript
css与javascript跨浏览器兼容性总结
2014/09/15 Javascript
JavaScript模拟实现键盘打字效果
2015/06/29 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
详解JavaScript中的Unescape()和String() 函数
2015/11/09 Javascript
详解Javascript几种跨域方式总结
2017/02/27 Javascript
JavaScript中AOP的实现与应用
2019/05/06 Javascript
layui实现数据表格点击搜索功能
2020/03/26 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
js+canvas实现刮刮奖功能
2020/09/13 Javascript
JavaScript 绘制饼图的示例
2021/02/19 Javascript
[46:23]完美世界DOTA2联赛PWL S2 FTD vs Magma 第一场 11.20
2020/11/23 DOTA
django中SMTP发送邮件配置详解
2019/07/19 Python
Django框架HttpResponse对象用法实例分析
2019/11/01 Python
Django 请求Request的具体使用方法
2019/11/11 Python
python循环输出三角形图案的例子
2019/11/22 Python
使用tensorflow显示pb模型的所有网络结点方式
2020/01/23 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
html5 Canvas画图教程(11)—使用lineTo/arc/bezierCurveTo画椭圆形
2013/01/09 HTML / CSS
纽约海:Sea New York
2018/11/04 全球购物
Can a struct inherit from another struct? (结构体能继承结构体吗)
2016/09/25 面试题
应届毕业生求职信范例分享
2013/12/17 职场文书
学生会离职感言
2014/02/11 职场文书
教师网络培训感言
2014/03/09 职场文书
文明家庭先进事迹材料
2014/05/14 职场文书
监察建议书格式
2014/05/19 职场文书
民主评议党员工作总结
2014/10/20 职场文书
酒店员工手册范本
2015/05/14 职场文书
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
2021/06/18 MySQL
vue实现Toast组件轻提示
2022/04/10 Vue.js