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脚本来获取mp3文件tag信息的教程
May 04 Python
Python读取网页内容的方法
Jul 30 Python
python实现单线程多任务非阻塞TCP服务端
Jun 13 Python
你真的了解Python的random模块吗?
Dec 12 Python
Python函数的参数常见分类与用法实例详解
Mar 30 Python
django一对多模型以及如何在前端实现详解
Jul 24 Python
python定位xpath 节点位置的方法
Aug 27 Python
Python 实现自动导入缺失的库
Oct 29 Python
Numpy与Pytorch 矩阵操作方式
Dec 27 Python
PyCharm无法引用自身项目解决方式
Feb 12 Python
Python selenium爬取微信公众号文章代码详解
Aug 12 Python
python自动化调用百度api解决验证码
Apr 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 数组基础知识小结
2010/08/20 PHP
需要注意的几个PHP漏洞小结
2012/02/05 PHP
php cookie名使用点号(句号)会被转换
2014/10/23 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
收藏一些不常用,但是有用的代码
2007/03/12 Javascript
图片自动缩小 点击放大
2008/07/07 Javascript
jQuery Div中加载其他页面的实现代码
2009/02/27 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
2013/09/22 Javascript
jQuery+ajax实现动态执行脚本的方法
2015/01/27 Javascript
jquery实现炫酷的叠加层自动切换特效
2015/02/01 Javascript
全面解析JavaScript里的循环方法之forEach,for-in,for-of
2020/04/20 Javascript
表单中单选框添加选项和移除选项
2016/07/04 Javascript
Bootstrap CSS布局之图像
2016/12/17 Javascript
js实现瀑布流效果(自动生成新的内容)
2017/03/16 Javascript
深入学习 JavaScript中的函数调用
2017/03/23 Javascript
带你了解session和cookie作用原理区别和用法
2017/08/14 Javascript
Js利用prototype自定义数组方法示例
2017/10/20 Javascript
async/await地狱该如何避免详解
2018/05/10 Javascript
[01:45]IMBATV TI4前线报道-选手到达
2014/07/07 DOTA
[47:12]TFT vs Secret Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
详尽讲述用Python的Django框架测试驱动开发的教程
2015/04/22 Python
Python工程师面试题 与Python Web相关
2016/01/14 Python
python使用tensorflow保存、加载和使用模型的方法
2018/01/31 Python
使用Python快乐学数学Github万星神器Manim简介
2019/08/07 Python
python wxpython 实现界面跳转功能
2019/12/17 Python
Python Socket TCP双端聊天功能实现过程详解
2020/06/15 Python
一款CSS3实现多功能下拉菜单(带分享按)的教程
2014/11/05 HTML / CSS
使用html2canvas实现浏览器截图的示例代码
2018/01/26 HTML / CSS
详解移动端Html5页面中1px边框的几种解决方法
2018/07/24 HTML / CSS
StudentUniverse英国:学生航班、酒店和旅游
2019/08/25 全球购物
生产车间实习自我鉴定
2013/09/23 职场文书
实习自我鉴定
2013/12/15 职场文书
工商企业管理专业自荐信范文
2014/04/12 职场文书
孩子教育的心得体会
2014/09/01 职场文书
MySQL查询学习之基础查询操作
2021/05/08 MySQL
Oracle更换为MySQL遇到的问题及解决
2021/05/21 Oracle