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中的Null模式与桥接模式编程
Feb 02 Python
Python的净值数据接口调用示例分享
Mar 15 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
Nov 15 Python
pyQT5 实现窗体之间传值的示例
Jun 20 Python
把django中admin后台界面的英文修改为中文显示的方法
Jul 26 Python
python快速编写单行注释多行注释的方法
Jul 31 Python
python 协程中的迭代器,生成器原理及应用实例详解
Oct 28 Python
python实现将json多行数据传入到mysql中使用
Dec 31 Python
Python如何实现邮件功能
May 27 Python
详解Python模块化编程与装饰器
Jan 16 Python
pandas:get_dummies()与pd.factorize()的用法及区别说明
May 21 Python
如何使用PyCharm及常用配置详解
Jun 03 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 Zip解压 文件在线解压缩的函数代码
2010/05/26 PHP
浅谈PHP表单提交(POST&GET&URL编/解码)
2017/04/03 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
2017/06/07 PHP
javascript 页面划词搜索JS
2009/09/28 Javascript
jQuery 下拉列表 二级联动插件分享
2012/03/29 Javascript
Jquery 选中表格一列并对表格排序实现原理
2012/12/15 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
2013/11/12 Javascript
基于jQuery通过jQuery.form.js插件使用ajax提交form表单
2015/08/17 Javascript
Windows下用PyCharm和Visual Studio开始Python编程
2015/10/26 Javascript
jQuery Mobile弹出窗、弹出层知识汇总
2016/01/05 Javascript
详解JavaScript UTC时间转换方法
2016/01/07 Javascript
利用Node.js编写跨平台的spawn语句详解
2017/02/12 Javascript
React Native之prop-types进行属性确认详解
2017/12/19 Javascript
vue实现图片滚动的示例代码(类似走马灯效果)
2018/03/03 Javascript
Vue父子组件传值的一些坑
2020/09/16 Javascript
js实现电灯开关效果
2021/01/19 Javascript
基于JavaScript实现简单的轮播图
2021/03/03 Javascript
[01:11:28]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第一场 1月8日
2021/03/11 DOTA
numpy中的高维数组转置实例
2018/04/17 Python
Python RabbitMQ消息队列实现rpc
2018/05/30 Python
详解django自定义中间件处理
2018/11/21 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
2018/12/24 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
2019/07/03 Python
Python通过cv2读取多个USB摄像头
2019/08/28 Python
基于Python实现扑克牌面试题
2019/12/11 Python
HTML5通过调用canvas对象的getContext()方法来获取绘图环境
2014/06/23 HTML / CSS
UNIX文件系统分类
2014/11/11 面试题
协议书模板
2014/04/23 职场文书
诉讼财产保全担保书
2014/05/20 职场文书
委托书怎样写
2014/08/30 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书
学校后勤工作总结2015
2015/05/15 职场文书
护士岗前培训心得体会
2016/01/08 职场文书
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
2023/05/08 MySQL