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实现支持目录FTP上传下载文件的方法
Jun 03 Python
Django的HttpRequest和HttpResponse对象详解
Jan 26 Python
Python中垃圾回收和del语句详解
Nov 15 Python
python读取有密码的zip压缩文件实例
Feb 08 Python
实例讲解Python3中abs()函数
Feb 19 Python
Django中间件拦截未登录url实例详解
Sep 03 Python
python使用sklearn实现决策树的方法示例
Sep 12 Python
新年福利来一波之Python轻松集齐五福(demo)
Jan 20 Python
python matplotlib imshow热图坐标替换/映射实例
Mar 14 Python
基于matplotlib中ion()和ioff()的使用详解
Jun 16 Python
如何清空python的变量
Jul 05 Python
Python中实现一行拆多行和多行并一行的示例代码
Sep 06 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
php5中类的学习
2008/03/28 PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
2011/06/24 PHP
PHP中数字检测is_numeric与ctype_digit的区别介绍
2012/10/04 PHP
php实现字符串首字母转换成大写的方法
2015/03/17 PHP
php通过两层过滤获取留言内容的方法
2016/07/11 PHP
PHP实现无限分类的实现方法
2016/11/14 PHP
PHP异常类及异常处理操作实例详解
2018/12/19 PHP
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
2010/11/23 Javascript
zShowBox 图片放大展示jquery版 兼容性
2011/09/24 Javascript
jQuery中操控hidden、disable等无值属性的方法
2014/01/06 Javascript
js 设置缓存及获取设置的缓存
2014/05/08 Javascript
JavaScript操作HTML元素和样式的方法详解
2015/10/21 Javascript
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
2015/10/30 Javascript
javascript实现文字无缝滚动
2016/12/27 Javascript
Bootstrap 响应式实用工具实例详解
2017/03/29 Javascript
vue 实现类似淘宝星级评分的示例
2018/03/01 Javascript
webpack打包node.js后端项目的方法
2018/03/10 Javascript
微信小程序页面间值传递的两种方法
2018/11/26 Javascript
python基础教程之缩进介绍
2014/08/29 Python
浅析Python中signal包的使用
2015/11/13 Python
Python3匿名函数用法示例
2018/07/25 Python
CentOS下Python3的安装及创建虚拟环境的方法
2018/11/28 Python
使用Python画股票的K线图的方法步骤
2019/06/28 Python
Python 多个图同时在不同窗口显示的实现方法
2019/07/07 Python
pandas read_excel()和to_excel()函数解析
2019/09/19 Python
Pycharm 如何一键加引号的方法步骤
2021/02/05 Python
办公室文秘自我鉴定
2013/09/21 职场文书
财务主管岗位职责
2014/02/28 职场文书
优秀员工获奖感言
2014/03/01 职场文书
报关报检委托书
2014/04/08 职场文书
法人授权委托书格式
2014/04/08 职场文书
会计专业应届生自荐信
2014/06/28 职场文书
世界气象日活动总结
2015/02/27 职场文书
2016春季运动会通讯稿
2015/07/18 职场文书
uni-app 微信小程序授权登录的实现步骤
2022/02/18 Javascript
抖音动画片,皮皮虾,《治愈系》动画在用这首REMIX作为背景音乐,Anak ,The last world with you完整版
2022/03/16 杂记