使用命令行运行caffe获得的信息过于抽象,如训练过程中显示的Loss函数、测试准确率等数据均以文本形式展示;caffe用于描述神经网络结构的prototxt文件也不利于直观理解网络结构。针对这几个问题,本文总结了训练结果折线图绘制和神经网络描述prototxt文件的可视化方法步骤,归纳如下。
一、绘制Iter-Loss折线图步骤。
不仅仅是Iter和Loss的关系,神经网络在训练过程中有Loss,在测试过程中有Acc,度量这些数值变化的常用单位有Sec、Iter等,这些变量相关的折线图都可按以下步骤绘制。
step1.记录caffe训练过程中的日志数据,使用以下命令:
$ sudo GLOG_logtostderr=0 GLOG_log_dir='path/to/save/' ./build/tools/caffe train -solver xxx/xxx/solver.prototxt .......
只需要输入log文件的保存路径即可,不需要输入log文件名称。
即在启动caffe训练的命令前添加保存日志的命令即可,之后要使用哪些caffe的参数和原先调用caffe命令一样,直接加在后面,示例如下图:
step2.修改产生的日志名称,必须以.log结尾。
生成日志文件名称如下,可使用mv命令将其修改成.log文件。
step3.使用plot_training_log利用日志生成折线图:
caffe自带的plot_training_log可根据.log结尾的caffe日志文件生成对应折线图,该工具位于CAFFE_ROOT/tools/extra目录下,该工具的使用方法如下。
Usage:
./plot_training_log.py chart_type[0-7] /where/to/save.png /path/to/first.log ...
Notes:
1. Supporting multiple logs.
2. Log file name must end with the lower-cased ".log".
Supported chart types:
0: Test accuracy vs. Iters
1: Test accuracy vs. Seconds
2: Test loss vs. Iters
3: Test loss vs. Seconds
4: Train learning rate vs. Iters
5: Train learning rate vs. Seconds
6: Train loss vs. Iters
7: Train loss vs. Seconds
二、prototxt文件生成图形化网络结构方法。
使用caffe自带的draw_net.py生成prototxt对应神经网络的图像。
usage: draw_net.py [-h] [--rankdir RANKDIR] [--phase PHASE] input_net_proto_file output_image_file
示例如下: