如何在window下绘制caffe的loss和accuracy曲线

如何在window下绘制caffe的loss和accuracy曲线

其大概方法都是要先生成log文件,然后通过其来绘制这两条曲线。生产log文件基本有两种方法。

方法一

 通过命令行来进行生成,其使用bat文件时的配置为:
h:  
cd H:\VCproject\dd
caffe.exe train --solver=H:/VCproject/dd/solver.prototxt --weights=H:/VCproject/dd/bvlc_reference_caffenet.caffemodel >Log/xinxi.log 2>&1
pause  

其截图为:
这里写图片描述
注意:这个时把在控制台上的输出打印到xinxi.log文件中,缺点:无法在控制台上看到实时的输出信息。接着就可以使用[小工具][1]进行画图了。

方法二:

使用修改源代码的方式。其使用VS2013打开Caffe。到src/common.cpp文件,

1、如下代码:

#include <boost/date_time.hpp>  
#include <process.h>  
#include <direct.h>  

2、日志的子函数

void initGlog() {  
  FLAGS_log_dir = ".\\log\\";//存放日志文件的文件夹路径,我们可以自己指定  
  _mkdir(FLAGS_log_dir.c_str());  
  std::string LOG_INFO_FILE;  
  std::string LOG_WARNING_FILE;  
  std::string LOG_ERROR_FILE;  
  std::string LOG_FATAL_FILE;  
  std::string now_time = boost::posix_time::to_iso_extended_string(boost::posix_time::second_clock::local_time());  
  now_time[13] = '-';  
  now_time[16] = '-';  
  LOG_INFO_FILE = FLAGS_log_dir + "INFO" + now_time + ".log"; //将txt改为log,因为caffe处理脚本处理的是log类型,
  google::SetLogDestination(google::GLOG_INFO, LOG_INFO_FILE.c_str());  
  LOG_WARNING_FILE = FLAGS_log_dir + "WARNING" + now_time + ".txt";  
  google::SetLogDestination(google::GLOG_WARNING, LOG_WARNING_FILE.c_str());  
  LOG_ERROR_FILE = FLAGS_log_dir + "ERROR" + now_time + ".txt";  
  google::SetLogDestination(google::GLOG_ERROR, LOG_ERROR_FILE.c_str());  
  LOG_FATAL_FILE = FLAGS_log_dir + "FATAL" + now_time + ".txt";  
  google::SetLogDestination(google::GLOG_FATAL, LOG_FATAL_FILE.c_str());  
}  

需要注意的是这个子函数一定要定义在void GlobalInit(int* pargc, char*** pargv)之前,因为Globallnit函数要调用initGlob()子函数。

3、oid GlobalInit(int* pargc, char*** pargv)函数中调用2中定义的子函数

void GlobalInit(int* pargc, char*** pargv) {  
  // Google flags.  
  ::gflags::ParseCommandLineFlags(pargc, pargv, true);  
  // Provide a backtrace on segfault.  
  //::google::InstallFailureSignalHandler();  
  // Google logging.  
  /*******添加到下面位置*********/  
  initGlog();  
  /**************************/  
  ::google::InitGoogleLogging(*(pargv)[0]);  
}  

4、重新生成libcaffe
右击项目libcaffe->生成,等待就可以了。
5、重新生成caffe,这个很重要否则无法生效,我一开始就忘记这一步,所以没有成功。
右击项目caffe->生成,等待就OK!
6、分享两个很有用的连接
Linux下训练日志重定向及画loss与accuracy曲线:http://blog.csdn.net/fx409494616/article/details/53197209?ref=myread,这篇博客中的做法更加简洁
caffe中如何关闭命令行log输出:http://blog.csdn.net/zhangla1220/article/details/50999072,使用于工程。
一切搞定,赶紧去试试吧!
再次训练网络时,你会在Build\x64\Release下发现多出一个log文件夹,我们所要的训练日志就保存在里面了。至于如何利用这些日志文件,画loss曲线和accuracy曲线,下一篇再详细讲解。
注意:这修改源代码的方式自己测试了下,并有成功,只能创建文件夹,但是没有日志生成。

成了日志文件后我们需要做的就是如何绘制loss和accuracy曲线了。

我们需要的就是博客后面的小工具,其就是tools/extra/下的工具,不过那些时在linux下的,在运行时会出错,所以在window下需要进行修改,小工具就是经过修改的,不过plot_training_log.py的开头还需要添加一行代码,其为:
# -*- coding: utf-8 -*-

否则会报:yntaxError:Non-ASCII character ‘\xe6’ in file等错误。
在window下的方法就是:
1、把生产的log文件放到这个小工具目录下;
2、把然后在cmd中使用下面的指令:

python plot_training_log.py 7 train.png xiaoxi.log

其中的7指的是第七种绘图方式,不过一般是使用0,跌到次数跟loss或者accuracy的关系。图如下:
这里写图片描述

[1]小工具
参考博客:Caffe-Windows下画loss与accuracy曲线

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值