caffe保存训练日志并绘制loss,acc曲线

2023-12-24 19:48

本文主要是介绍caffe保存训练日志并绘制loss,acc曲线,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

环境windows10 x64+caffe

1、导出训练日志到log文件

start.bat是我训练网络使用的 批处理文件

start.bat的内容是:

因为我把caffe加到了系统path中,所以这里直接写caffe train。后面的--solver 是训练用到的协议文件,定义一些参数,如指定网络定义文件,指定学习率,模型保存位置,学习衰减参数,以及优化算法等。最后的这个 >log/train.log 2>&1就是将训练日志保存到log文件夹下的train.log文件中,2>&1就是用来将标准错误2重定向到标准输出1中的。此处&就是为了让bat1解释成标准输出而不是文件1。

双击start.bat就会开始训练网络,并生成日志文件:train.log

2、利用caffe自带的工具可视化log日志

如图所示,在caffe根目录下的tools/extra文件夹下,有几个文件是用来可视化log日志的:

extract_seconds.py  , parse_log.py ,parse_log.sh ,plot_training_log.py.example

将其复制到log文件夹下,并将plot_training_log.py.example的后缀example删除

然后在这个文件夹下打开一个终端,输入 python parse_log.py train.log ./ 命令,在log文件夹下生成train.log.test和train.log.test文件,用于后续画图:

接下来需要修改plot_training_log.py的几处代码:

(1)在这个文件中不调用parse_log.sh文件,因为上一步已经单独调用了parse_log.py生成了.train和.test文件,如果在这里调用会出现生成的train.log.train和train.log.test两个文件中只有一行,sh脚本的具体代码我没看,但是这里我注释掉不调用。

(2)修改两处,#改为N,下一行的split()改为split(',')

原因:因为使用parsh_log.py生成的文件形式是下图中这样的:

第一行是以NumIters开头,所以在读取数据时这一行要跳过,判断规则就是如果一行的第一个字母是N就跳过。这样就会只读取后面的数字行。

(3)修改如下数据

修改完这些地方之后,在命令行中输入命令:python plot_training_log.py 0 test_learn_rate.png train.log

这里有三个参数:

0 表示上图中 train和test都有四个值(Iters,Seconds,Learning rate, loss),组合就会出现8种(一行是一种)图的类型如下:

['Test learning rate  vs. Iters','Test learning rate  vs. Seconds','Test loss  vs. Iters', 'Test loss  vs. Seconds','Train learning rate  vs. Iters', 'Train learning rate  vs. Seconds', 'Train loss  vs. Iters', 'Train loss  vs. Seconds']

这个0就表示索引为0的图类型:'Test learning rate  vs. Iters'

test_learn_rate.png 表示要绘制的图保存的名字

train.log 就是前面log日志文件

运行画图命令之后,输出的图片为测试的学习率和迭代次数之间的图。想画其他变量之间的关系图就把参数0修改为其他的即可。

2 testloss/iters

4 train_learning_rate/iters

6 train_loss/iter

这篇关于caffe保存训练日志并绘制loss,acc曲线的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/532927

相关文章

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

golang 日志log与logrus示例详解

《golang日志log与logrus示例详解》log是Go语言标准库中一个简单的日志库,本文给大家介绍golang日志log与logrus示例详解,感兴趣的朋友一起看看吧... 目录一、Go 标准库 log 详解1. 功能特点2. 常用函数3. 示例代码4. 优势和局限二、第三方库 logrus 详解1.

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步

SQL Server清除日志文件ERRORLOG和删除tempdb.mdf

《SQLServer清除日志文件ERRORLOG和删除tempdb.mdf》数据库再使用一段时间后,日志文件会增大,特别是在磁盘容量不足的情况下,更是需要缩减,以下为缩减方法:如果可以停止SQLSe... 目录缩减 ERRORLOG 文件(停止服务后)停止 SQL Server 服务:找到错误日志文件:删除

grom设置全局日志实现执行并打印sql语句

《grom设置全局日志实现执行并打印sql语句》本文主要介绍了grom设置全局日志实现执行并打印sql语句,包括设置日志级别、实现自定义Logger接口以及如何使用GORM的默认logger,通过这些... 目录gorm中的自定义日志gorm中日志的其他操作日志级别Debug自定义 Loggergorm中的

SpringBoot项目注入 traceId 追踪整个请求的日志链路(过程详解)

《SpringBoot项目注入traceId追踪整个请求的日志链路(过程详解)》本文介绍了如何在单体SpringBoot项目中通过手动实现过滤器或拦截器来注入traceId,以追踪整个请求的日志链... SpringBoot项目注入 traceId 来追踪整个请求的日志链路,有了 traceId, 我们在排

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL

使用C++将处理后的信号保存为PNG和TIFF格式

《使用C++将处理后的信号保存为PNG和TIFF格式》在信号处理领域,我们常常需要将处理结果以图像的形式保存下来,方便后续分析和展示,C++提供了多种库来处理图像数据,本文将介绍如何使用stb_ima... 目录1. PNG格式保存使用stb_imagephp_write库1.1 安装和包含库1.2 代码解

开启mysql的binlog日志步骤详解

《开启mysql的binlog日志步骤详解》:本文主要介绍MySQL5.7版本中二进制日志(bin_log)的配置和使用,文中通过图文及代码介绍的非常详细,需要的朋友可以参考下... 目录1.查看是否开启bin_log2.数据库会把日志放进logs目录中3.查看log日志总结 mysql版本5.71.查看