keras的tensorboard的可视化和模型可视化、解决No dashboards are active for the current data set等问题

TensorBoard

TensorBoard 是 TensorFlow 上一个非常酷的功能,神经网络很多时候就像是个黑盒子,里面到底是什么样,是什么样的结构,是怎么训练的,可能很难搞清楚。而 TensorBoard 的作用就是可以把复杂的神经网络训练过程给可视化,可以更好地理解,调试并优化程序。
TensorBoard可以将训练过程中的各种绘制数据展示出来,包括标量(scalars),图片(images),音频(Audio),计算图(graph),数据分布,直方图(histograms)和嵌入式向量。

在 scalars 下可以看到 accuracy,cross entropy,dropout,layer1 和 layer2 的 bias 和 weights 等的趋势。
在 images 和 audio 下可以看到输入的数据。展示训练过程中记录的图像和音频。
在 graphs 中可以看到模型的结构。
在 histogram 可以看到 activations,gradients 或者 weights 等变量的每一步的分布,越靠前面就是越新的步数的结果。展示训练过程中记录的数据的分布图
distribution 和 histogram 是两种不同的形式,可以看到整体的状况。
在 embedding 中可以看到用 PCA 主成分分析方法将高维数据投影到 3D 空间后的数据的关系。
Event: 展示训练过程中的统计数据(最值,均值等)变化情况

使用TensorBoard展示数据,需要在执行Tensorflow计算图的过程中,将各种类型的数据汇总并记录到日志文件中。然后使用TensorBoard读取这些日志文件,解析数据并生产数据可视化的Web页面,让我们可以在浏览器中观察各种汇总数据。

keras使用TensorBoard

直接上代码:

log_filepath = '/tmp/keras_log' 

model.compile(loss='categorical_crossentropy', optimizer=SGD(lr=0.001), metrics=['accuracy'])

tb_cb = keras.callbacks.TensorBoard(log_dir=log_filepath, write_images=1, histogram_freq=1)  
# 设置log的存储位置,将网络权值以图片格式保持在tensorboard中显示,设置每一个周期计算一次网络的权值,每层输出值的分布直方图 

cbks = [tb_cb]  

history = model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch, verbose=1, callbacks=cbks, validation_data=(X_test, Y_test))

tensorboard默认的slcar一栏只记录了训练集和验证集上的loss,如何想记录展示其他指标,在model.compile的metric中进行添加,例如:

model.compile(  
      loss = 'mean_squared_error',  
      optimizer = 'sgd',  
      metrics= c('mae', 'acc')  # 可视化mae和acc 
    )

可视化结果

切换到日志文件路径 /tmp/keras_log 下面,在该文件夹中打开终端,输入:

tensorboard --logdir=./

如果你在上一级文件夹打开终端,修改对应的路径即可。

笔者在这里遇到Tensorboard报错No dashboards are active for the current data set的问题,大家可以参考文章末尾的参考文献6和7.出现这个问题的主要原因都是日志文件的路径没有写对。最简单的解决方法就是按上述的操作进行,直接在日志文件夹中打开终端进行可视化。

执行完上述命令之后,出现下面的情况。可以看到,直接打开地址http://iotlabk402-HP-Z840-Workstation:6006就可以查看到TensorBoard界面。

iotlab-k40-2@iotlabk402-HP-Z840-Workstation:~/PycharmWorkspace/PycharmWorkSpace/SentimentAnalysis/model/run_a$ tensorboard --logdir=./
/home/iotlab-k40-2/anaconda3/lib/python3.6/importlib/_bootstrap.py:219: RuntimeWarning: compiletime version 3.5 of module 'tensorflow.python.framework.fast_tensor_util' does not match runtime version 3.6
  return f(*args, **kwds)
TensorBoard 1.6.0 at http://iotlabk402-HP-Z840-Workstation:6006 (Press CTRL+C to quit)
W0424 15:43:50.031046 Thread-1 application.py:273] path /[[_dataImageSrc]] not found, sending 404
W0424 15:45:16.472221 Thread-1 application.py:273] path /[[_dataImageSrc]] not found, sending 404
W0424 15:45:49.844785 Thread-1 application.py:273] path /[[_dataImageSrc]] not found, sending 404
W0424 15:45:53.046918 Thread-1 application.py:273] path /[[_dataImageSrc]] not found, sending 404

打开浏览器的结果如下:

这里写图片描述

模型可视化

在keras上进行模型可视化也是比较方便的。

代码如下:

from keras.utils import plot_model
plot_model(model, to_file='model.png')

中间可能会出现一个报错:

Failed to import pydot. You must install pydot and graphviz for pydotprint to work.

参考文献8、9、10、11给出了相关的解决方法。这个问题的主要原因是需要安装依赖包。
笔者小白亲测的一个比较简单的方法如下:

sudo apt-get install graphviz
sudo pip install pydot-ng

注意需要先安装graphviz再装pydot-ng

随便run一个神经网络,最后可以的到保存下来的模型图片。

这里写图片描述

参考文献:
1、http://www.voidcn.com/article/p-htlmkhji-bmr.html 2018.4.24
2、http://www.cnblogs.com/bnuvincent/p/7353677.html 2018.4.24
3、https://blog.csdn.net/jiandanjinxin/article/details/77155565 2018.4.24
4、https://www.jianshu.com/p/70bdd176eb60 2018.4.24
5、https://blog.csdn.net/xiaojiajia007/article/details/72865764 2018.4.24
6、https://blog.csdn.net/sinat_20729643/article/details/78683677 2018.4.24
7、https://blog.csdn.net/zym19941119/article/details/78999855 2018.4.24
8、https://blog.csdn.net/qq_34564612/article/details/78851001 2018.4.24
9、https://stackoverflow.com/questions/36886711/keras-runtimeerror-failed-to-import-pydot-after-installing-graphviz-and-pyd 2018.4.24
10、http://www.zhimengzhe.com/linux/353667.html 2018.4.24
11、https://blog.csdn.net/hahajinbu/article/details/72859849 2018.4.24

猜你喜欢

转载自blog.csdn.net/johinieli/article/details/80070071
今日推荐