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字符转换
Sep 06 Python
Python中设置变量作为默认值时容易遇到的错误
Apr 03 Python
Python实现将DOC文档转换为PDF的方法
Jul 25 Python
python3库numpy数组属性的查看方法
Apr 17 Python
Python二叉树定义与遍历方法实例分析
May 25 Python
pandas 对每一列数据进行标准化的方法
Jun 09 Python
Pyqt5 基本界面组件之inputDialog的使用
Jun 25 Python
python中下标和切片的使用方法解析
Aug 27 Python
windows下的pycharm安装及其设置中文菜单
Apr 23 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
Jan 07 Python
python 三种方法提取pdf中的图片
Feb 07 Python
Python实现打乒乓小游戏
Sep 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如何解决网站大流量与高并发的问题
2011/06/25 PHP
JavaScript中null与undefined分析
2009/07/25 Javascript
jQuery 创建Dom元素
2010/05/07 Javascript
js解析与序列化json数据(二)序列化探讨
2013/02/01 Javascript
JS实现随机数生成算法示例代码
2013/08/08 Javascript
javascript放大镜效果的简单实现
2013/12/09 Javascript
jquery实现漫天雪花飞舞的圣诞祝福雪花效果代码分享
2015/08/20 Javascript
跟我学习javascript的循环
2015/11/18 Javascript
JavaScript生成二维码图片小结
2015/12/27 Javascript
jQuery旋转插件jqueryrotate用法详解
2016/10/13 Javascript
微信小程序 form组件详解
2016/10/25 Javascript
简单学习vue指令directive
2016/11/03 Javascript
获取本机IP地址的实例(JavaScript / Node.js)
2017/11/24 Javascript
node puppeteer(headless chrome)实现网站登录
2018/05/09 Javascript
如何使node也支持从url加载一个module详解
2018/06/05 Javascript
微信小程序中this.data与this.setData的区别详解
2018/09/17 Javascript
jQuery操作元素追加内容示例
2020/01/10 jQuery
Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法
2018/04/22 Python
Django中使用Celery的教程详解
2018/08/24 Python
Python离线安装PIL 模块的方法
2019/01/08 Python
基于YUV 数据格式详解及python实现方式
2019/12/09 Python
Python 线性回归分析以及评价指标详解
2020/04/02 Python
python中wx模块的具体使用方法
2020/05/15 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
2020/06/14 Python
DataFrame.groupby()所见的各种用法详解
2020/06/14 Python
python统计mysql数据量变化并调用接口告警的示例代码
2020/09/21 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
2020/12/07 Python
针对HTML5的Web Worker使用攻略
2015/07/12 HTML / CSS
一套.net面试题及答案
2016/11/02 面试题
开业庆典主持词
2014/03/21 职场文书
药店采购员岗位职责
2014/09/30 职场文书
机关作风建设工作总结
2014/10/23 职场文书
2016年社区“我们的节日·中秋节”活动总结
2016/04/05 职场文书
详解Js模块化的作用原理和方案
2021/04/29 Javascript
Java多条件判断场景中规则执行器的设计
2021/06/26 Java/Android
Python使用Web框架Flask开发项目
2022/06/01 Python