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 29 Python
python生成ppt的方法
Jun 07 Python
让代码变得更易维护的7个Python库
Oct 09 Python
深入了解Django View(视图系统)
Jul 23 Python
将Python文件打包成.EXE可执行文件的方法
Aug 11 Python
详解Django-channels 实现WebSocket实例
Aug 22 Python
Python3 sys.argv[ ]用法详解
Oct 24 Python
python 爬虫 实现增量去重和定时爬取实例
Feb 28 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
Mar 02 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
Mar 12 Python
python 贪心算法的实现
Sep 18 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
Nov 02 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
世界第一个无线广播电台 KDKA
2021/03/01 无线电
PHP加密解密实例分析
2015/12/25 PHP
PHP登录(ajax提交数据和后台校验)实例分享
2016/12/29 PHP
ExtJS 2.0实用简明教程 之Border区域布局
2009/04/29 Javascript
一个js写的日历(代码部分网摘)
2009/09/20 Javascript
JavaScript 利用StringBuffer类提升+=拼接字符串效率
2009/11/24 Javascript
jquery select动态加载选择(兼容各种浏览器)
2013/02/01 Javascript
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
js操作XML文件的实现方法兼容IE与FireFox
2016/06/25 Javascript
jquery实现垂直和水平菜单导航栏
2020/08/27 Javascript
利用Vue.js指令实现全选功能
2016/09/08 Javascript
jquery点击展示与隐藏更多内容
2016/12/03 Javascript
node.js报错:Cannot find module 'ejs'的解决办法
2016/12/14 Javascript
js自定义瀑布流布局插件
2017/05/16 Javascript
详解Angular 4 表单快速入门
2017/06/05 Javascript
JavaScript中的return布尔值的用法和原理解析
2017/08/14 Javascript
Js中async/await的执行顺序详解
2017/09/22 Javascript
浅析Vue实例以及生命周期
2018/08/14 Javascript
图片文字识别(OCR)插件Ocrad.js教程
2018/11/26 Javascript
详解vue组件中使用路由方法
2019/02/12 Javascript
mpvue性能优化实战技巧(小结)
2019/04/17 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
2019/04/22 Javascript
react国际化化插件react-i18n-auto使用详解
2020/03/31 Javascript
Python Matplotlib库入门指南
2015/05/18 Python
python分块读取大数据,避免内存不足的方法
2018/12/10 Python
Python爬虫文件下载图文教程
2018/12/23 Python
Python多进程写入同一文件的方法
2019/01/14 Python
Python嵌入C/C++进行开发详解
2020/06/09 Python
matplotlib部件之套索Lasso的使用
2021/02/24 Python
CSS3 2D模拟实现摩天轮旋转效果
2016/11/16 HTML / CSS
美国美发品牌:Bumble and Bumble
2016/10/08 全球购物
澳大利亚在线床零售商:Bedworks
2020/09/01 全球购物
国家奖学金获奖感言
2014/08/16 职场文书
财务务虚会发言材料
2014/10/20 职场文书
会计岗位工作总结
2015/08/12 职场文书
小学新课改心得体会
2016/01/22 职场文书