caffe工具 绘制 loss accuracy曲线

来源:互联网 发布:淘宝首页装修设计尺寸 编辑:程序博客网 时间:2024/06/04 19:00

深度学习中loss和accuracy是十分重要的数据 …balabala
这篇博主根据http://blog.csdn.net/u013078356/article/details/51154847进行实测后记录下的

1 得到caffe训练的log日志文件

1.1

使用的是shell命令,如果你是windows还是先下一个Git(链接就在这)
GLOG_logtostderr=0 GLOG_log_dir=your_log_path/log/  \your_caffe_path/caffe.exe train \--solver=your_solver_path/solver.prototxtread -n 1
‘your_log_path/log/’是你存放日志文件的文件夹路径

1.2

运行sh后在your_log_path/log路径下会有一个形如
caffe.exe.你的计算机名.你的用户名.log.INFO.时间.几位数字 的文件
你需要更改文件格式 把它重命名为 ******.log文件格式为log的文件

2 生成TRAIN、TEST文件

2.1

在你的caffe路径下\tools\extra中有
parse_log.py
plot_training_log.py.example
extract_seconds.py
将它们复制到你的日志文件夹下,
并且重命名 plot_training_log.py.example为 plot_training_log.py

2.2

在cmd下切换目录至log文件夹下运行

python parse_log.py  ******.log

将会在log文件夹下生成 ******.log.train和******.log.test文件
你可以用文本编辑器把它们打开
第一行会有键值类似这样 #Iters Seconds TestAccuracy TestLoss
下面是键值对应的参数
后面我们会用到键值顺序来修改plot_training_test.py文件

3 绘制loss accuracy曲线

3.1

用文本编辑器打开plot_training_log.py文件
找到create_field_index函数
按照train、test文件给出的键值顺序调整train_key、test_key
比如
我的train文件第一行:#Iters Seconds TrainingLoss LearningRate
我的test文件迪一行:#Iters Seconds TestAccuracy TestLoss
做出的调整如下:

def create_field_index():    train_key = 'Train'    test_key = 'Test'    field_index = {train_key:{'Iters':0, 'Seconds':1, train_key + ' Loss':2,                              train_key + ' Accuracy':3},                   test_key:{'Iters':0, 'Seconds':1, test_key + ' Accuracy':2,                             test_key + ' Loss':3}}    fields = set()    for data_file_type in field_index.keys():        fields = fields.union(set(field_index[data_file_type].keys()))    fields = list(fields)    fields.sort()    return field_index, fields

3.2

我们先看一下plot_training_log.py的参数
在cmd下切换目录至log文件夹下运行

python plot_training_log.py

可以得到:

./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 Accuracy  vs. Iters    5: Train Accuracy  vs. Seconds    6: Train Loss  vs. Iters    7: Train Loss  vs. Seconds

在cmd下切换目录至log文件夹下运行

python plot_training_log.py 0 ***.png *******.log

args说明:
0代表曲线类型,可以对照Supported chart types【由于前面整改过create_field_index函数,所以数字对应类型可能不同,请自行查看,根据你需要的曲线类型改变数字参数】
***.png曲线图文件名
******.log日志文件