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项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

Golang 日志处理和正则处理的操作方法

《Golang日志处理和正则处理的操作方法》:本文主要介绍Golang日志处理和正则处理的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录1、logx日志处理1.1、logx简介1.2、日志初始化与配置1.3、常用方法1.4、配合defer

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

Nacos日志与Raft的数据清理指南

《Nacos日志与Raft的数据清理指南》随着运行时间的增长,Nacos的日志文件(logs/)和Raft持久化数据(data/protocol/raft/)可能会占用大量磁盘空间,影响系统稳定性,本... 目录引言1. Nacos 日志文件(logs/ 目录)清理1.1 日志文件的作用1.2 是否可以删除

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

使用nohup和--remove-source-files在后台运行rsync并记录日志方式

《使用nohup和--remove-source-files在后台运行rsync并记录日志方式》:本文主要介绍使用nohup和--remove-source-files在后台运行rsync并记录日... 目录一、什么是 --remove-source-files?二、示例命令三、命令详解1. nohup2.

QT6中绘制UI的两种方法详解与示例代码

《QT6中绘制UI的两种方法详解与示例代码》Qt6提供了两种主要的UI绘制技术:​​QML(QtMeta-ObjectLanguage)​​和​​C++Widgets​​,这两种技术各有优势,适用于不... 目录一、QML 技术详解1.1 QML 简介1.2 QML 的核心概念1.3 QML 示例:简单按钮

MySQL精准控制Binlog日志数量的三种方案

《MySQL精准控制Binlog日志数量的三种方案》作为数据库管理员,你是否经常为服务器磁盘爆满而抓狂?Binlog就像数据库的“黑匣子”,默默记录着每一次数据变动,但若放任不管,几天内这些日志文件就... 目录 一招修改配置文件:永久生效的控制术1.定位my.cnf文件2.添加核心参数不重启热更新:高手应

Python使用Matplotlib绘制3D曲面图详解

《Python使用Matplotlib绘制3D曲面图详解》:本文主要介绍Python使用Matplotlib绘制3D曲面图,在Python中,使用Matplotlib库绘制3D曲面图可以通过mpl... 目录准备工作绘制简单的 3D 曲面图绘制 3D 曲面图添加线框和透明度控制图形视角Matplotlib