windows下运用matlab绘制caffe训练日志文件中的loss曲线

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/slz0813/article/details/78529076

在深度学习中,不可获取的是对于loss的数据特性分析,然而loss曲线绘制是可视化中较为直观且实现较为简单的部分。下面将着重讲解windows环境下的用matlab绘制caffe训练日志中的loss曲线。

step1:首先我们需要获取caffe的训练日志文件,如果您没有使用类似这样的命令将当前训练的日志输出。

......caffe train --solver=......  2>&1 | tee log.txt  

那么你需要通过以下方式找到你的caffe训练日志。

step1:

开始菜单搜索  %temp%


在 Temp文件夹内会存放默认条件下caffe的训练日志。这里会有很多文件,在搜索框搜索关键字 caffe 会出现和caffe相关的日志文件


这里caffe.LITCHI-PC.Litchi.log.INFO.20171011-125054.4340为我们所需要的训练产生的训练日志,ERROR和FATAL为发生错误时的提示,调试时出现错误请查看这些文件。根据文件日期分辩是一个好的小技巧。打开方式可以使用默认txt,或者下载一个notpad++更为方便阅读。


step2:

将需要的日志文件复制到自己的目录,由于文件名较长,作者这里为了方便将其重命名为  *.log 的形式。如:‘P3e10_MFCNN_caffe.log’。

step3:

使用matlab脚本程序绘制曲线,代码如下

%my loss  
clear;  clc;  close all;  

folder_test = 'draw_loss';%为了方便绘制多个训练日志,通过文件夹统一存放
filepaths = dir(fullfile(folder_test,'*.log'));%获取文件夹下所有.log格式文件列表,即批处理操作,这里我使用了重命名将后缀改为.log方便识别。

%train_log_file = 'P3e10_MFCNN_caffe.log' ; %你的caffe训练日志 


for i = 1 : length(filepaths)  %for循环用于批处理操作
    train_log_file = fullfile(folder_test,filepaths(i).name);
    [~, string_output] = dos(['type ' , train_log_file ]) ;  %windows下获取文件内字符串,注意需要加上'type'类型,否则运行时会默认记事本打开当前文件
    %[~, string_output] = dos( train_log_file ) ;  %
    %pat='1 = .*? loss';  
    pat='Train net output #\d: loss = .*? ';%draw train loss 此处为正则表达项,匹配caffe训练中的Train net output字段,为了和test loss区别开

    o1=regexp(string_output,pat,'start');%用'start'参数指定输出o1为匹配正则表达式的子串的起始位置  
    o2=regexp(string_output,pat,'end');%用'start'参数指定输出o1为匹配正则表达式的子串的结束位置  
    o3=regexp(string_output,pat,'match');%用'match'参数指定输出o2为匹配正则表达式的子串   

    loss_num =270;%作者这里由于每次训练的次数不同,为了控制绘图同精度,故在匹配的数据矩阵中只取前270个点用于绘制loss,这里可根据需求自行更改。
    loss=zeros(1,loss_num);  
    for j=1:size(loss,2)  
        loss(j)=str2num(string_output(o1(j)+28:o2(j)));  
    end 
    loss_path=strcat('loss_mat/',filepaths(i).name,'.mat');
    save(loss_path,'loss');
    hold on
    plot(loss)  
end


相应的程序含义在每句中包含有注释。请读者自行理解体会。


step4:最后为了美观你可以自定义曲线颜色和对应的提示标记,这里不展开赘述,如:



上述为windows环境下用matlab绘制caffe训练日志train loss的全过程,需要绘制test loss或 test accuracy的同学,请自行更改代码中的正则匹配部分即可。如果对正则不熟悉的同学可以搜索网页版正则校验器进行尝试,非常简单,熟能生巧。


最后本文为作者原创,未经许可请勿转载,感谢配合。希望我的只言片语可以给您带来帮助,非常感谢。文章中若有纰漏和其他问题,欢迎批评指正共同进步。详细请在留言区评论。 


猜你喜欢

转载自blog.csdn.net/slz0813/article/details/78529076