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 字典(Dictionary)操作详解
Mar 11 Python
python读取oracle函数返回值
Jul 18 Python
Django验证码的生成与使用示例
May 20 Python
Python实现获取照片拍摄日期并重命名的方法
Sep 30 Python
shell命令行,一键创建 python 模板文件脚本方法
Mar 20 Python
python使用RNN实现文本分类
May 24 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
Jun 05 Python
解决Python运行文件出现out of memory框的问题
Dec 03 Python
python 2.7 检测一个网页是否能正常访问的方法
Dec 26 Python
python标记语句块使用方法总结
Aug 05 Python
python右对齐的实例方法
Jul 05 Python
python Tkinter模块使用方法详解
Apr 07 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正确配置mysql(apache环境)
2011/08/28 PHP
php inc文件使用的风险和注意事项
2013/11/12 PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
2014/11/18 PHP
php操作mongoDB实例分析
2014/12/29 PHP
在win系统安装配置 Memcached for PHP 5.3 图文教程
2015/03/03 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
2015/11/15 PHP
PHP如何搭建百度Ueditor富文本编辑器
2018/09/21 PHP
第一个JavaScript入门基础 document.write输出
2010/02/22 Javascript
JS图片根据鼠标滚动延时加载的实例代码
2013/07/13 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
2014/01/11 Javascript
html的DOM中document对象forms集合用法实例
2015/01/21 Javascript
动态加载jQuery的方法
2015/06/16 Javascript
JavaScript使用DeviceOne开发实战(三)仿微信应用
2015/12/02 Javascript
js实现html table 行,列锁定的简单实例
2016/10/13 Javascript
JS中如何实现复选框全选功能
2016/12/19 Javascript
详解angularJs中关于ng-class的三种使用方式说明
2017/06/02 Javascript
vue-cli webpack模板项目搭建及打包时路径问题的解决方法
2018/02/26 Javascript
结合Vue控制字符和字节的显示个数的示例
2018/05/17 Javascript
小程序getLocation需要在app.json中声明permission字段
2019/04/04 Javascript
javascript实现贪吃蛇小游戏
2020/07/28 Javascript
Python中尝试多线程编程的一个简明例子
2015/04/07 Python
Python中的anydbm模版和shelve模版使用指南
2015/07/09 Python
Python selenium文件上传方法汇总
2020/11/19 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
2018/12/12 Python
Flask教程之重定向与错误处理实例分析
2019/08/01 Python
python网络编程socket实现服务端、客户端操作详解
2020/03/24 Python
Python Json数据文件操作原理解析
2020/05/09 Python
解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题
2020/07/14 Python
微软澳洲官方网站:Microsoft Australia
2017/01/10 全球购物
中学生运动会入场词
2014/02/12 职场文书
学徒工职责
2014/03/06 职场文书
课程设计的心得体会
2014/09/03 职场文书
2014年远程教育工作总结
2014/12/09 职场文书
少先队工作总结2015
2015/05/13 职场文书
Go本地测试解耦任务拆解及沟通详解Go本地测试的思路沟通的重要性总结
2022/06/21 Golang