当前位置: 首页 > news >正文

caffe 训练过程中输出log日志,并可视化loss和accuracy曲线

使用Caffe自带的tools来产生loss和accuracy曲线

举例说明:

本人训练时,使用的文件如下:

[ trainsh->solve.py->solver.prototxt->train_val.prototxt ]

1. 训练过程中保存日志

执行如下命令:

bash ./train.sh 2>&1 |tee logs/train.log

将会在logs文件夹下生成train.log 的日志文件

注意: 分析日志文件发现,训练过程中每display一次,会保存一次日志

 

2. 创建绘制曲线文件夹myshow及复制相关文件

创建绘制曲线文件夹myshow

把你的caffe目录下的 /tools/extra/ 目录下的

extract_seconds.py

parse_log.sh

plot_training_log.py.example

parse_log.py (非必须)

复制到myshow目录下,再把训练得到的日志文件train.log文件复制到myshow目录下.

 

caffe的 /tools/extra/ 目录:

myshow目录:

 

3. 修改文件

3-1. 修改parse_log.sh文件:

#第29行的内容修改
#grep '] Solving ' $1 > aux3.txt
grep 'net.cpp:' $1 > aux3.txt


#第40行的内容修改
#grep '] Solving ' $1 > aux.txt
grep 'net.cpp:' $1 > aux.txt

3-2. 修改extract_seconds.py文件:

#第38行修改
#if line.find('Solving') != -1:
if line.find('Initializing') != -1:

 

3-3. 解析log文件

./parse_log.sh train.log ./

执行上述命令,即可成功解析log,并生成2个文件: .test和.train,如下所示:

3-4. 执行命令,可视化曲线:

./plot_training_log.py.example 2 loss.png train.log

注意:

 

说明:

 

举例说明:

./plot_training_log.py.example 5 loss.png train.log

可视化结果:

 

4. 遇到的错误总结

4-1. 未对caffe自带的绘图文件(

extract_seconds.py

parse_log.sh

plot_training_log.py.example

)进行修改,直接执行log解析,出现如下错误:

$ ./parse_log.sh train.log ./
Traceback (most recent call last):
  File "/home/ubuntu/xxx/examples/myshow/extract_seconds.py", line 64, in <module>
    extract_seconds(sys.argv[1], sys.argv[2])
  File "/home/ubuntu/xxx/examples/myshow/extract_seconds.py", line 49, in extract_seconds
    assert start_datetime, 'Start time not found'
AssertionError: Start time not found
paste: aux4.txt: No such file or directory
rm: cannot remove 'aux4.txt': No such file or directory
Traceback (most recent call last):
  File "/home/ubuntu/xxx/examples/myshow/extract_seconds.py", line 64, in <module>
    extract_seconds(sys.argv[1], sys.argv[2])
  File "/home/ubuntu/xxx/examples/myshow/extract_seconds.py", line 49, in extract_seconds
    assert start_datetime, 'Start time not found'
AssertionError: Start time not found
paste: aux3.txt: No such file or directory
rm: cannot remove 'aux3.txt': No such file or directory

解决方法就是:

根据上述 3-1, 3-2 的方法进行修改

 

个人分析其原因:

我的train.log中使用的几个关键词有变化:

是'Initializing',不是'Solving'

是的 'net.cpp:'  , 不是 '] Solving '

 

4-2.  我的train.log中没有记录任何有关 'Test net output #0' ,'Test net output #1' 的信息,所以在执行  ./plot_training_log.py.example 0 loss.png train.log 的时候出错.

$ ./plot_training_log.py.example 0 loss.png out.log
0 loss.png ['out.log']
Test accuracy  vs. Iters
Test
['Test accuracy', 'Iters'] Iters Test accuracy
Test accuracy  vs. Iters
Test
{'Iters': 0, 'Seconds': 1, 'Test loss': 3, 'Test accuracy': 2}
----1 out.log.test 0 2
Traceback (most recent call last):
  File "./plot_training_log.py.example", line 198, in <module>
    plot_chart(chart_type, path_to_png, path_to_logs)
  File "./plot_training_log.py.example", line 122, in plot_chart
    data = load_data(data_file, x, y)
  File "./plot_training_log.py.example", line 92, in load_data
    data[1].append(float(fields[field_idx1].strip()))
IndexError: list index out of range

同时发现,解析得到的.test文件内容也缺少一些内容:

有解析结果可知道,缺少了TestAccuracy ,TestLoss 两列内容.

所以,选择0-3的类型执行都会出错.(0-3的类型都是与Test(或.test文件的内容)有关的)

 

5. 参考链接

Caffe和py-faster-rcnn日常使用备忘录

https://blog.csdn.net/sushiqian/article/details/78597024

https://www.cnblogs.com/txg198955/p/6185787.html

https://blog.csdn.net/qq745021926/article/details/78076979

 

相关文章:

  • maven工程依赖的jar包,在本地仓库有,但是pom.xml文件却报错找不到jar包;IDEA运行项目类文件报错:java: 错误: 无效的源发行版:16
  • c++小细节/技巧
  • 范德蒙行列式
  • 代数余子式之和计算技巧
  • 伴随矩阵A*
  • 初等矩阵
  • 矩阵的秩
  • 对角分块矩阵
  • Schmidt正交化(正交规范化方法)
  • 向量空间
  • 矩阵的秩和线性方程组的解的关系
  • Ax=0的系数矩阵A的行向量和解向量的关系
  • 伴随矩阵的秩和原矩阵的秩的关系
  • 求线性方程组的解
  • 实对称矩阵的相似对角化
  • $translatePartialLoader加载失败及解决方式
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • avalon2.2的VM生成过程
  • ECMAScript入门(七)--Module语法
  • es的写入过程
  • Js基础——数据类型之Null和Undefined
  • Material Design
  • mysql中InnoDB引擎中页的概念
  • React-redux的原理以及使用
  • SAP云平台里Global Account和Sub Account的关系
  • vue中实现单选
  • Zepto.js源码学习之二
  • 创建一个Struts2项目maven 方式
  • 从零搭建Koa2 Server
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 听说你叫Java(二)–Servlet请求
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • ​水经微图Web1.5.0版即将上线
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • $.ajax()
  • (¥1011)-(一千零一拾一元整)输出
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (poj1.3.2)1791(构造法模拟)
  • (九)信息融合方式简介
  • (离散数学)逻辑连接词
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转载)PyTorch代码规范最佳实践和样式指南
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .net core 依赖注入的基本用发
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET的微型Web框架 Nancy
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化
  • /deep/和 >>>以及 ::v-deep 三者的区别