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怎么学好python?
Oct 07 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
Sep 21 Python
使用Python3 编写简单信用卡管理程序
Dec 21 Python
详解Python核心编程中的浅拷贝与深拷贝
Jan 07 Python
基于MTCNN/TensorFlow实现人脸检测
May 24 Python
打包PyQt5应用时的注意事项
Feb 14 Python
如何使用python传入不确定个数参数
Feb 18 Python
python如何更新包
Jun 11 Python
Python如何输出警告信息
Jul 30 Python
Python使用grequests并发发送请求的示例
Nov 05 Python
python 实现德洛内三角剖分的操作
Apr 22 Python
Python 数据可视化神器Pyecharts绘制图像练习
Feb 28 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文件上传实例详解!!!
2007/01/02 PHP
yii框架配置默认controller和action示例
2014/04/30 PHP
php的laravel框架快速集成微信登录的方法
2016/12/12 PHP
PHP实现用户登录的案例代码
2018/05/10 PHP
thinkPHP框架中执行事务的方法示例
2018/05/31 PHP
PHP实现可精确验证身份证号码的工具类示例
2018/05/31 PHP
深入理解 PHP7 中全新的 zval 容器和引用计数机制
2018/10/15 PHP
JavaScript使用技巧精萃[代码非常实用]
2008/11/21 Javascript
突发奇想的一个jquery插件
2010/11/19 Javascript
JQuery live函数
2010/12/24 Javascript
用jquery实现的模拟QQ邮箱里的收件人选取及其他效果(一)
2011/01/06 Javascript
JQuery触发radio或checkbox的change事件
2012/12/18 Javascript
extjs3 combobox取value和text案例详解
2013/02/06 Javascript
JS获取月的最后一天与JS得到一个月份最大天数的实例代码
2013/12/16 Javascript
使用jQuery快速解决input中placeholder值在ie中无法支持的问题
2014/01/02 Javascript
js操作滚动条事件实例
2015/01/29 Javascript
图解JavaScript中的this关键字
2020/05/28 Javascript
AngularJS实现网站换肤实例
2021/02/19 Javascript
Vue 实用分页paging实例代码
2017/04/12 Javascript
Vue实现百度下拉提示搜索功能
2017/06/21 Javascript
vue中$set的使用(结合在实际应用中遇到的坑)
2018/07/10 Javascript
Vue项目接入Paypal实现示例详解
2020/06/04 Javascript
js实现圆形菜单选择器
2020/12/03 Javascript
[06:16]第十四期-国士无双绝地翻盘之撼地神牛
2014/06/24 DOTA
Python数字图像处理之霍夫线变换实现详解
2018/01/12 Python
解决pyinstaller打包pyqt5的问题
2019/01/08 Python
python网络编程 使用UDP、TCP协议收发信息详解
2019/08/29 Python
python进程间通信Queue工作过程详解
2019/11/01 Python
Spy++的使用方法及下载教程
2021/01/29 Python
什么是三层交换,说说和路由的区别在那里
2014/09/01 面试题
工程部主管岗位职责
2013/11/17 职场文书
建筑个人求职信范文
2014/01/25 职场文书
2015年求职自荐信范文
2015/03/04 职场文书
2015年医院护理部工作总结
2015/04/23 职场文书
Java常用函数式接口总结
2021/06/29 Java/Android
Android实现获取短信验证码并自动填充
2023/05/21 Java/Android