caffe 日志保存以及matlab绘制方法(windows以及ubuntu下)
caffe 用matlab解析日志画loss和accuracy
clc;
clear; % load the log file of caffe model
fid = fopen('log-previous-insulator.txt', 'r');
tline = fgetl(fid); accuracyIter =[];
accuracyArray =[];
lossIter = [];
lossArray = []; %record the last line
lastLine = ''; %read line
while ischar(tline)
%%%%%%%%%%%%%% the accuracy line %%%%%%%%%%%%%%
k = strfind(tline, 'Test net output');
if (k)
k = strfind(tline, 'accuracy');
if (k)
% If the string contain test and accuracy at the same time
% The bias from 'accuracy' to the float number
indexStart = k + 11;
indexEnd = size(tline);
str = tline(indexStart : indexEnd(2));
accuracyArray = [accuracyArray, str2num(str)];
end % Get the number of index
k = strfind(lastLine, 'Iteration');
if (k)
indexStart = k + 10;
indexEnd = strfind(lastLine, '(');
str2 = lastLine(indexStart : indexEnd - 1);
accuracyIter = [accuracyIter, str2num(str2)];
end % Concatenation of two string
res_str = strcat(str2, '/', str);
end %%%%%%%%%%%%%% the loss line %%%%%%%%%%%%%%
k1 = strfind(tline, 'Iteration');
if (k1)
k2 = strfind(tline, 'loss');
if (k2)
indexStart = k2 + 7; %loss位置到数据位置起始位置相差7位
indexEnd = size(tline);
str1 = tline(indexStart:indexEnd(2)); %数据开始位置到结束位置,就是loss,也就是纵坐标
indexStart = k1 + 10; %从iteration到迭代次数数据起始位相差10位
indexEnd = strfind(tline, '(') - 1; %找到左括号位置-1:根据你的txt来看是括号还是逗号
str2 = tline(indexStart:indexEnd); %从起始位置到结束位置为迭代次数,也就是横坐标
res_str1 = strcat(str2, '/', str1); %把横纵坐标连接起来
lossIter = [lossIter, str2num(str2)]; %把迭代次数转化为数据赋值给lossiter
lossArray = [lossArray, str2num(str1)]; %把loss转化为数据复给lossArray
end
end lastLine = tline;
tline = fgetl(fid);
end %draw figure
figure;h1 = plot(accuracyIter, accuracyArray);title('iteration vs accurancy'); %绘制accuracy曲线
figure;h2 = plot(lossIter, lossArray);title('iteration vs loss'); %绘制loss曲线
print(2,'-dpng','iteration vs loss')%保存
caffe保存训练log日志文件并利用保存的log文件绘制accuary loss曲线图
1、训练模型时保存log日志文件 方法1 一般情况下我们的训练模型标准语句是:$ sudo ./build/tools/caffe train -solver=xxx/xxx/solver.prototxt xxx/xxx/表示你的solver.prototxt文件所在位置 需要保存log文件时的命令是:$ sudo GLOG_logtostderr=0 GLOG_log_dir='xxx/xxx/xxx/' build/tools/caffe train -solver=xxx/xxx/solver.prototxt ’xxx/xxx/xxx/‘表示你所保存的log文件所在位置。 训练完成后发现在我们保存的目录xxx/xxx/xxx/下生成了两个上锁log文件caffe.INFO和caffe.ubuntu.root.log.INFO.20170611-103712.5383。点击打开后我们可以看到我们所训练的日志文件。 方法2 ./build/tools/caffe train -solver=xn/PENLU/neural/nin/nin_solver.prototxt 2>&1 | tee xn/PENLU/snapshot/nin/nin_relu.log 2、利用生成的log文件绘制accuary loss曲线图 首先绘制图,caffe中其实已经自带了这样的小工具 caffe-master/tools/extra/parse_log.sh 和caffe-master/tools/extra/extract_seconds.py还有 caffe-master/tools/extra/plot_training_log.py.example;拷贝以上文件到当前训练模型的目录下。 然后我们到你保存的log文件目录下将1中保存的log文件解锁,解锁命令:sudo chmod -R 777 ./caffe.ubuntu.root.log.INFO.20170611-103712.5383 解锁后我们就可以更改该log文件名为xxx.log(注意:要画图一定是.log文件,所以不改名不可以画)。 然后复制该xxx.log文件到你训练模型所在目录下。 然后就可以利用命令画图了:在模型所在目录下命令: ./plot_training_log.py.example y xxx.png xxx.log xxx.png是你保存的绘制出的图片名称,xxx.log是你保存的log文件名称。y表示的是你的所绘制的图片到底是什么图片,具体解释如下: y的数字代表意义(0~7): 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 (训练损失与时间图) 运行后生成的文件有:log-data.log.test和log-data.log.test和xxx.png 3、test测试log日志文件保存与绘图类似过程
Ps: windows记录训练日志
caffe中其实已经自带了这样的小工具 caffe-master/tools/extra/parse_log.sh caffe-master/tools/extra/extract_seconds.py和 caffe-master/tools/extra/plot_training_log.py.example ,使用方法如下:1.windows记录训练日志:在训练过程中的命令中加入一行参数 ,实现Log日志的记录,这里我使用的.bat。其实一可以像前面某位大哥一样,直接copy输出的类容。
caffe train --solver=deepid/deepid2/deepid_solver.prototxt >log/XXXXX.log 2>&1
pause
caffe 日志保存以及matlab绘制方法(windows以及ubuntu下)的更多相关文章
- windows、ubuntu下eclipse搭建java、Python环境问题总结
前两篇博文分别讲述了如何在windows.ubuntu下用eclipse搭建java.python环境,下面就针对本人遇到的问题做一个总结. 一.windows下关于java环境变量JAVA_HOME ...
- windows和ubuntu下git commit提交后如何保存和退出,回到命令行
问题一: windows下git commit后会进入vim界面,不知道怎么操作 解决办法: 1.输入小写字母i,此时进入编辑模式,可以输入你想输入的内容 2.按下esc键,此时退出编辑模式,输入英文 ...
- Windows和ubuntu下更改pip国内镜像
windows下更改pip国内镜像 # 在C:\Users\admin路径下创建pip文件夹,然后创建pip.ini文件, 并在文件下写入 [global] index-url = http://py ...
- [转]windows下和Ubuntu下adb找不到设备的解决方法
最近在做flash手机项目,用fb选择android设备调试,总会出现找不到设备的情况.看了很多帖子都解决不了问题,后来终于研究出来是adb无法找到设备的问题.最后通知这篇帖子终于解决了问题. 使用电 ...
- windows和ubuntu下gif动态图片的制作
现在社交软件中, 各种各样的动图为大家交流很大的乐趣. Gif图片比视频小, 比静态JPG图片形象生动, 更适用于产品展示和步骤演示等. 这里简单介绍一下在window系统和ubuntu系统下gif ...
- Elasticsearch 在 windows 和 ubuntu 下详细安装过程
1. 前言 作为一名 .NET 平台开发者,选择开发框架时总会面临更多的局限性,不过对于搜索这种刚需服务来说,开源框架可供选择的余地还是比较大的.笔者之前用的是 Lucene.net ,现在深感其使用 ...
- windows和Ubuntu下安装mongodb
windows 下载 mongodb官网下载压缩版安装包:下载地址:https://www.mongodb.com/download-center/community 注意选择版本(目前windows ...
- windows调用ubuntu下的sublimeText2环境搭建
部署需求: windows: windows 7 32 sp1 32位: linux :ubuntu 12.04 LTS 64位: 环境: windows安装:xmanager 4 linux安装:g ...
- windows远程访问ubuntu下的jupyter notebook必要配置
0.生成配置文件(一般采用默认) jupyter notebook --generate-config 1.打开ipython, 创建一个密文密码 In [1]: from notebook.auth ...
随机推荐
- 【转】pecl,pear的不同
PEAR是PHP扩展与应用库(the PHP Extension and Application Repository)的缩写.它是一个PHP扩展及应用的一个代码仓库,基于php代码的,安装目录在/u ...
- Blender 工具使用——显示键盘和鼠标操作
Blender 工具使用--显示键盘和鼠标操作 Blender自己本身就带有显示按键和鼠标的功能,就是3D View: Screencast Keys插件. 打开 File(文件) -> Use ...
- ZROI2018提高day3t2
传送门 分析 我们设A[i]表示点i有几个矿,B[i]表示这之中有几个矿是第一次出现,所以点i的贡献即为 (2^B[i]-1)*(2^(A[i]-B[i])) 注意减一的原因是第一次出现的矿应至少有一 ...
- ZROI2018提高day1t3
传送门 分析 考场上想到了先枚举p的长度,在枚举这个长度的所有子串,期望得分40~50pts,但是最终只得了20pts,这是因为我写的代码在验证中总是不断删除s'中的第一个p,而这种方式不能解决形如a ...
- 10.model/view实例(3)
任务:3x2的表格,第一个单元格显示当前时间 思考: 1.data函数里面QTime::currentTime()显示当前时间 2.但是这个事件是一个固定的时间,不会变动 3.需要时间变动,View就 ...
- react+node制作在线笔记本(一)
一. 使用react的官方脚手架create-react-app创建项目,为了支持使用sass,我们使用eject命令 这样,我们就可以自由对webpack进行配置了. 二. 首先要安装style-l ...
- Java之封装特性
Java中的三大特性:继承,封装,多态: 其中封装概念:封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口. 面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治.封装的 对象 ...
- [译]Javasctipt中的substring
本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...
- SpringMVC路径问题回顾,加斜杠和不加斜杠的问题(六)
绝对路径:全的路径. 相对路径:有参照的路径. 加斜杠和不加斜杠的问题如下:(分前台和后台路径,明白这两个就知道什么意思了) 如果是页面,这个图片路径出现在jsp页面,所以是前台路径,前台路径的参照物 ...
- Repeater控件的分隔线
在Repeater控件中,很容易实现在行与行之间使用分隔线.因为此控件有内置的SeparatorTemplate模版.举个例子吧: 运行时,可以看到效果: 说句实在的话,Insus.NET做一条水平线 ...