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中input和raw_input的一点区别
Oct 21 Python
Python实现的多线程端口扫描工具分享
Jan 21 Python
Python学生信息管理系统修改版
Mar 13 Python
详解django的serializer序列化model几种方法
Oct 16 Python
python基于pdfminer库提取pdf文字代码实例
Aug 15 Python
Python2与Python3的区别点整理
Dec 12 Python
Pandas —— resample()重采样和asfreq()频度转换方式
Feb 26 Python
简单了解pytest测试框架setup和tearDown
Apr 14 Python
Python绘图之二维图与三维图详解
Aug 04 Python
python批量修改文件名的示例
Sep 27 Python
Python 多进程原理及实现
Dec 21 Python
python设置 matplotlib 正确显示中文的四种方式
May 10 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格式化工具Beautify PHP小小BUG
2008/04/24 PHP
PHP正则的Unknown Modifier错误解决方法
2010/03/02 PHP
php带密码功能并下载远程文件保存本地指定目录 修改加强版
2010/05/16 PHP
php中日期加减法运算实现代码
2011/12/08 PHP
PHP中把有符号整型转换为无符号整型方法
2015/05/27 PHP
PHP字典树(Trie树)定义与实现方法示例
2017/10/09 PHP
网页编辑器ckeditor和ckfinder配置步骤分享
2012/05/24 Javascript
Javascript拓展String方法小结
2013/07/08 Javascript
PHP开发者必须掌握的6个关键字
2014/04/14 Javascript
jQuery使用经验小技巧(推荐)
2016/05/31 Javascript
Bootstrap选项卡与Masonry插件的完美结合
2016/07/06 Javascript
vue之数据交互实例代码
2017/06/20 Javascript
jquery实现左右轮播切换效果
2018/01/01 jQuery
基于JavaScript实现抽奖系统
2018/01/16 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
2018/01/23 jQuery
vue-swiper的使用教程
2018/08/30 Javascript
分享5个好用的javascript文件上传插件
2018/09/16 Javascript
nodejs初始化init的示例代码
2018/10/10 NodeJs
教你搭建按需加载的Vue组件库(小结)
2019/07/29 Javascript
详解微信小程序工程化探索之webpack实战
2020/04/20 Javascript
Vue前端判断数据对象是否为空的实例
2020/09/02 Javascript
原生js实现下拉框选择组件
2021/01/20 Javascript
python查询sqlite数据表的方法
2015/05/08 Python
python通过socket查询whois的方法
2015/07/18 Python
Python中map,reduce,filter和sorted函数的使用方法
2015/08/17 Python
Flask数据库迁移简单介绍
2017/10/24 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
2019/10/24 Python
Python接口自动化测试的实现
2020/08/28 Python
Python爬虫如何破解JS加密的Cookie
2020/11/19 Python
pandas apply使用多列计算生成新的列实现示例
2021/02/24 Python
AmazeUi Tree(树形结构) 应用小结
2020/08/17 HTML / CSS
英国口碑最好的的维他命胶囊品牌:Myvitamins(有中文站)
2016/12/03 全球购物
匡威意大利官方商店 :Converse意大利
2018/11/27 全球购物
春风行动实施方案
2014/03/28 职场文书
尊师重教演讲稿
2014/09/04 职场文书
关于vue-router-link选择样式设置
2022/04/30 Vue.js