keras可视化可以帮助我们直观的查看所搭建的模型拓扑结构,以及模型的训练的过程,方便我们优化模型。
模型可视化又分为模型拓扑结构可视化以及训练过程可视化。
以上一讲的mnist为例,演示不同可视化方法:
参考《 Netron部分,Netron 是一款常见的可视化工具,支持网页查看常见的AI模型,支持非常丰富的格式(ONNX, Tensorflow, Pytorch, Keras, Caffe等),网页地址: https://netron.app/
将上一讲生成的keras_mnist.h5导入,得到模型结构,如下图:
对于一些简单的模型,可以直接使用keras提供的model.summary()方法,如上一讲的mnist模型,代码中:
# 搭建好模型后,加上这一句
print("model:")
model.summary()
输出模型如下:
model:
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
flatten (Flatten) (None, 784) 0
dense (Dense) (None, 784) 615440
dense_1 (Dense) (None, 10) 7850
=================================================================
Total params: 623,290
Trainable params: 623,290
Non-trainable params: 0
_________________________________________________________________
可见模型有一个flatten层,两个全连接层。
keras.utils.vis_utils模块提供了画出Keras模型的函数(利用graphviz)
import tensorflow as tf
import tensorflow.keras as keras
# 搭建好模型后,加上下一句
keras.utils.plot_model(model, to_file='model.svg', show_shapes=True)
注意:我这里按照官网生成model.png会失败,寻找网上的解决方案也无法解决,只好换用svg格式,svg格式可以通过浏览器直接打开,但是可能显示不全,可以修改model.svg的参数解决,参照参考2:
# 要调节width、height参数,以及viewBox参数
<svg width="825pt" height="825pt"
viewBox="0.00 0.00 825.00 825.00" # viewBox="x, y, width, height"
浏览器解析,模型如下:
plot_model函数定义:
tf.keras.utils.plot_model(
model, # keras model句柄
to_file='model.png', # 保存文件名及格式(这里使用svg格式)
show_shapes=False, # 是否显示形状信息,默认不显示
show_layer_names=True, # 显示layer名
rankdir='TB', # 横向显示(LR), 纵向显示(TB)
expand_nested=False, # 是否将嵌套模型扩展到聚类中
dpi=96
)
Keras Model
上的 fit()
方法返回一个 History
对象。History.history
是一个记录了连续迭代的训练/验证损失值和评估值的字典。可以通过matplotlib将数据展示出来(这里就不使用matplotlib画图了,将数据打印出来):
# 截取部分代码如下:
import tensorflow as tf
import tensorflow.keras as keras
# step4: train
history = model.fit(x_train, y_train, batch_size=64, epochs=5)
# 打印history字典中的keys值
print(history.history.keys())
# 获取验证准确率数据
print(history.history['accuracy'])
# 获取训练时的损失值
print(history.history['loss'])
执行结果为:
dict_keys(['loss', 'accuracy'])
[0.9143333435058594, 0.9519500136375427, 0.9597333073616028, 0.9615499973297119, 0.9619333148002625]
[3.5814223289489746, 0.38597372174263, 0.26168128848075867, 0.23524414002895355, 0.24421487748622894]
Tensorboard提供训练过程可视化的功能,是通过keras的回调函数来实现的。
# 截取部分代码如下:
import tensorflow as tf
import tensorflow.keras as keras
from keras.callbacks import TensorBoard
tbCallBack = TensorBoard() # 默认日志放到./logs 文件夹下
history = model.fit(x_train, y_train, batch_size=64, epochs=5, callbacks=[tbCallBack])
通过shell下执行如下命令,然后使用浏览器可打开tensorboard面板:
tensorboard --logdir /path/to/logs
Tensorboard 功能强大,对tensorflow、keras、还是pytorch都提供良好支持,这里先不做展开,可以参考3。
参考: