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 11 Python
python机器学习之贝叶斯分类
Mar 26 Python
查看python下OpenCV版本的方法
Aug 03 Python
Python设计模式之装饰模式实例详解
Jan 21 Python
选择python进行数据分析的理由和优势
Jun 25 Python
pandas对dataFrame中某一个列的数据进行处理的方法
Jul 08 Python
python自动化UI工具发送QQ消息的实例
Aug 27 Python
将tf.batch_matmul替换成tf.matmul的实现
Jun 18 Python
pycharm 代码自动补全的实现方法(图文)
Sep 18 Python
Python+Appium实现自动化清理微信僵尸好友的方法
Feb 04 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
Feb 25 Python
利用Selenium添加cookie实现自动登录的示例代码(fofa)
May 08 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
150kHz到30Mhz完全冲浪手册
2020/03/20 无线电
Yii PHP Framework实用入门教程(详细介绍)
2013/06/18 PHP
php的慢速日志引起的Mysql错误问题分析
2014/05/13 PHP
Windows下编译PHP5.4和xdebug全记录
2015/04/03 PHP
PHP实现的支付宝支付功能示例
2019/03/26 PHP
PHP调用QQ互联接口实现QQ登录网站功能示例
2019/10/24 PHP
javascript 事件处理示例分享
2014/12/31 Javascript
DOM基础教程之使用DOM设置文本框
2015/01/20 Javascript
javascript数据结构与算法之检索算法
2015/04/04 Javascript
jQuery实现分隔条左右拖动功能
2015/11/21 Javascript
JS控制文本域只读或可写属性的方法
2016/06/24 Javascript
Javascript中this关键字指向问题的测试与详解
2017/08/11 Javascript
React为 Vue 引入容器组件和展示组件的教程详解
2018/05/03 Javascript
mpvue将vue项目转换为小程序
2018/09/30 Javascript
Vue批量图片显示时遇到的路径被解析问题
2019/03/28 Javascript
layui框架与SSM前后台交互的方法
2019/09/12 Javascript
Vue循环中多个input绑定指定v-model实例
2020/08/31 Javascript
[03:17]2016完美“圣”典风云人物:冷冷专访
2016/12/08 DOTA
Python中字符串对齐方法介绍
2015/05/21 Python
Numpy中转置transpose、T和swapaxes的实例讲解
2018/04/17 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
2019/02/18 Python
python3 写一个WAV音频文件播放器的代码
2019/09/27 Python
python中def是做什么的
2020/06/10 Python
使用SQLAlchemy操作数据库表过程解析
2020/06/10 Python
详解Python+Selenium+ChromeDriver的配置和问题解决
2021/01/19 Python
旅游管理毕业生自荐信
2013/11/05 职场文书
酒店保洁主管岗位职责
2013/11/28 职场文书
综合办公室个人的自我评价
2013/12/22 职场文书
给老师的一封建议书
2014/03/13 职场文书
关于环保的活动方案
2014/08/25 职场文书
服务明星事迹材料
2014/12/29 职场文书
暖春观后感
2015/06/08 职场文书
环境卫生整治简报
2015/07/20 职场文书
2016年师德师风学习心得体会
2016/01/12 职场文书
教你怎么用Python selenium操作浏览器对象的基础API
2021/06/23 Python
Java 超详细讲解IO操作字节流与字符流
2022/03/25 Java/Android