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最基本的数据类型以及对元组的介绍
Apr 14 Python
Python的Django框架中的数据过滤功能
Jul 17 Python
Django框架中处理URLconf中特定的URL的方法
Jul 20 Python
在Django的通用视图中处理Context的方法
Jul 21 Python
Python3.2模拟实现webqq登录
Feb 15 Python
对比Python中__getattr__和 __getattribute__获取属性的用法
Jun 21 Python
Python中dict和set的用法讲解
Mar 28 Python
python 如何将数据写入本地txt文本文件的实现方法
Sep 11 Python
Python scrapy增量爬取实例及实现过程解析
Dec 24 Python
节日快乐! Python画一棵圣诞树送给你
Dec 24 Python
Python调用Windows命令打印文件
Feb 07 Python
python的链表基础知识点
Sep 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
试用php中oci8扩展
2015/06/18 PHP
破解Session cookie的方法
2006/07/28 Javascript
encode脚本和normal脚本混用的问题与解决方法
2007/03/08 Javascript
offsetParent 算法分析
2010/04/05 Javascript
ie支持function.bind()方法实现代码
2012/12/27 Javascript
javascript特殊用法示例介绍
2013/11/29 Javascript
jQuery实现移动 和 渐变特效的点击事件
2015/02/26 Javascript
JavaScript弹出新窗口后向父窗口输出内容的方法
2015/04/06 Javascript
js实现从右向左缓缓浮出网页浮动层广告的方法
2015/05/09 Javascript
Vue.js Ajax动态参数与列表显示实现方法
2016/10/20 Javascript
使用ionic播放轮询广告的实现方法(必看)
2017/04/24 Javascript
javascript性能优化之分时函数的介绍
2018/03/28 Javascript
在angular 6中使用 less 的实例代码
2018/05/13 Javascript
[41:56]Spirit vs Liquid Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
python发送邮件功能实现代码
2016/07/15 Python
python web.py开发httpserver解决跨域问题实例解析
2018/02/12 Python
python 列表递归求和、计数、求最大元素的实例
2018/11/28 Python
用python代码将tiff图片存储到jpg的方法
2018/12/04 Python
python删除列表元素的三种方法(remove,pop,del)
2019/07/22 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
2019/10/27 Python
基于keras中的回调函数用法说明
2020/06/17 Python
python软件都是免费的吗
2020/06/18 Python
Python面向对象实现方法总结
2020/08/12 Python
Python如何设置指定窗口为前台活动窗口
2020/08/12 Python
如何删除一个表里面的重复行
2013/07/13 面试题
年度献血先进个人事迹材料
2014/02/14 职场文书
化妆品店促销方案
2014/02/24 职场文书
教师求职自荐信
2014/03/09 职场文书
团日活动总结
2014/04/28 职场文书
产品销售计划书
2014/05/04 职场文书
校园安全演讲稿
2014/05/09 职场文书
校园环保标语
2014/06/13 职场文书
保研推荐信范文
2015/03/25 职场文书
SqlServer: 如何更改表的文件组?(进而改变存储位置)
2021/04/05 SQL Server
基于PostgreSQL/openGauss 的分布式数据库解决方案
2021/12/06 PostgreSQL
pt-archiver 主键自增
2022/04/26 MySQL