Keras使用tensorboard显示训练过程的实例


Posted in Python onFebruary 15, 2020

众所周知tensorflow造势虽大却很难用,因此推荐使用Keras,它缺省是基于tensorflow的,但通过修改keras.json也可以用于theano。但是为了能用tensorflow提供的tensorboard,因此建议仍基于tensorflow。

那么问题来了,由于Keras隐藏了tensorflow那令人诟病、可笑至极的graph构建方法,那么如何使用tensorboard呢?一般网站上会告诉你是这样的:

方法一(标准调用方法):

采用keras特有的fit()进行训练,只要在fit的时候指定callbacks函数即可,代码如下

from keras.callbacks import TensorBoard 
from keras.models import Sequential 
…… 
model = Sequential() 
…… 
tbCallBack = keras.callbacks.TensorBoard(log_dir='./Graph', 
histogram_freq=1, 
write_graph=True, 
write_images=True)

model_history = model.fit(X_train_train, 
y_train_train, 
batch_size=batch_size, 
epochs=epochs, 
verbose=1, 
validation_data=(X_train_val, y_train_val), 
callbacks = [EarlyStopping(patience=patience,mode='min',verbose=1), 
history, 
tbCallBack])

虽然这种方法看上去很美,但它只适用于标准训练方法,如果你想用自己的训练方法,就需要调用train_on_batch,而不能直接使用fit(),这时就要采用下面这种方法:

方法二(特殊调用方法):

这种方法可用于调用train_on_batch的情况。

%预先写好writer,定义好model 
writer = tf.summary.FileWriter(…) 
model = … 
%训练时 
loss = model.train_on_batch(…) 
summary = tf.Summary(value=[ 
tf.Summary.Value(tag=”d_loss”, simple_value=d_loss), 
tf.Summary.Value(tag=”g_loss”, simple_value=g_loss), 
]) 
writer.add_summary(summary)

虽然很简单,但这种方法只能显示scalar类型,不能显示image,histgram等,非常不实用。真正实用的是下面的终结方法:

方法三(最实用的方法)

最实用的还是用tensorflow原生的调用方法,虽然相对方法二麻烦一点,但考虑到此方法与tensorflow一样,不需要去记那些额外的花拳绣腿,因此反而是最简单的,也是最有效的。

代码如下:

import tensorflow as tf 
import datetime 
%在训练开始之前,预先定义好可视化的东西,用的是原生的tensorflow方法,这里我们以一个GAN模型为例,让它显示整张模型图,两个标量损失函数,以及5个生成图像。方法是预先用placeholder声明所要显示的那些东西,然后在训练过程中将训练结果来填充它们。你可以自行加入histgram,都和tensorflow一样 
#start tensorboard 
sess=tf.Session() 
logdir = “tensorboard/” + datetime.datetime.now().strftime(“%Y%m%d-%H%M%S”) + “/” 
writer = tf.summary.FileWriter(logdir, sess.graph) 
D_LOSS = tf.placeholder(tf.float32, []) 
G_LOSS = tf.placeholder(tf.float32, []) 
IMAGES = tf.placeholder(tf.float32,shape=[None,28,28,1]) 
tf.summary.scalar(“D_LOSS”, D_LOSS) 
tf.summary.scalar(“G_LOSS”, G_LOSS) 
tf.summary.image(“IMAGES”, IMAGES, 5) 
merged=tf.summary.merge_all() 
#end tensorboard

训练迭代过程中,是这样的

for epoch in range(100): 
% 用keras的train_on_batch方法进行训练 
d_loss = d.train_on_batch(。。。。。。) 
g_loss = d_on_g.train_on_batch(。。。。。。) 
generated_images = g.predict(。。。。。。) 
if index%10==0: #tensorboard 
% 将训练结果填充可视化数据 
summary=sess.run(merged,feed_dict={D_LOSS:d_loss, G_LOSS:g_loss, IMAGES:generated_images}) 
writer.add_summary(summary,index)

以上这篇Keras使用tensorboard显示训练过程的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python入门之语句(if语句、while语句、for语句)
Jan 19 Python
在Python中操作字典之update()方法的使用
May 22 Python
Django框架中处理URLconf中特定的URL的方法
Jul 20 Python
python语言中with as的用法使用详解
Feb 23 Python
基于Python列表解析(列表推导式)
Jun 23 Python
Python 访问限制 private public的详细介绍
Oct 16 Python
python opencv 读取本地视频文件 修改ffmpeg的方法
Jan 26 Python
详解python项目实战:模拟登陆CSDN
Apr 04 Python
Python中字符串与编码示例代码
May 20 Python
PyInstaller的安装和使用的详细步骤
Jun 02 Python
python如何删除文件、目录
Jun 23 Python
Selenium Webdriver元素定位的八种常用方式(小结)
Jan 13 Python
Python利用逻辑回归分类实现模板
Feb 15 #Python
python发qq消息轰炸虐狗好友思路详解(完整代码)
Feb 15 #Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
Feb 15 #Python
tensorboard显示空白的解决
Feb 15 #Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
Feb 15 #Python
tensorboard 可以显示graph,却不能显示scalar的解决方式
Feb 15 #Python
解决Tensorboard 不显示计算图graph的问题
Feb 15 #Python
You might like
关于session在PHP5的配置文件中的详细设置参数说明
2011/04/20 PHP
PHP和JavaScrip分别获取关联数组的键值示例代码
2013/09/16 PHP
PHP延迟静态绑定示例分享
2014/06/22 PHP
Symfony的安装和配置方法
2016/03/17 PHP
mysql alter table命令修改表结构实例详解
2016/09/24 PHP
php readfile()修改文件上传大小设置
2017/08/11 PHP
web 页面分页打印的实现
2009/06/22 Javascript
自制基于jQuery的智能提示插件一枚
2011/02/18 Javascript
基于datagrid框架的查询
2013/04/08 Javascript
Javascript基础知识(二)事件
2014/09/29 Javascript
百度UEditor编辑器如何关闭抓取远程图片功能
2015/03/03 Javascript
Javascript显示和隐藏ul列表的方法
2015/07/15 Javascript
基于zepto的移动端轻量级日期插件--date_picker
2016/03/04 Javascript
JS控制伪元素的方法汇总
2016/04/06 Javascript
checkbox 选中一个另一个checkbox也会选中的实现代码
2016/07/09 Javascript
Bootstrap基本插件学习笔记之Alert警告框(20)
2016/12/08 Javascript
BootStrap导航栏问题记录
2017/07/31 Javascript
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
详解promise.then,process.nextTick, setTimeout 以及 setImmediate的执行顺序
2018/11/21 Javascript
解决layui动态加载复选框无法选中的问题
2019/09/20 Javascript
解决ele ui 表格表头太长问题的实现
2019/11/13 Javascript
JS实现关闭小广告特效
2021/01/29 Javascript
vue组件创建的三种方式小结
2020/02/03 Javascript
Vuex的热更替如何实现
2020/06/05 Javascript
[02:19]DOTA2女子战队FOX视频专访:希望更多美眉一起加入
2013/10/15 DOTA
Python 'takes exactly 1 argument (2 given)' Python error
2016/12/13 Python
python如何使用Redis构建分布式锁
2020/01/16 Python
使用sklearn的cross_val_score进行交叉验证实例
2020/02/28 Python
解决windows下python3使用multiprocessing.Pool出现的问题
2020/04/08 Python
英国最大的滑板品牌选择:Route One
2019/09/22 全球购物
关于工资低的辞职信
2014/01/14 职场文书
给儿子的表扬信
2014/01/15 职场文书
公司慰问信范文
2015/03/23 职场文书
2020年元旦祝福语录,总有适合你的
2019/12/31 职场文书
理解深度学习之深度学习简介
2021/04/14 Python
vue完美实现el-table列宽自适应
2021/05/08 Vue.js