中易网

如何绘制caffe网络训练曲线

答案:1  悬赏:10  
解决时间 2021-02-01 22:48
如何绘制caffe网络训练曲线
最佳答案
当我们设计好网络结构后,在神经网络训练的过程中,迭代输出的log信息中,一般包括,迭代次数,训练损失代价,测试损失代价,测试精度等。本文提供一段示例,简单讲述如何绘制训练曲线(training curve)。

首先看一段训练的log输出,网络结构参数的那段忽略,直接跳到训练迭代阶段:
I0627 21:30:06.004370 15558 solver.cpp:242] Iteration 0, loss = 21.6953
I0627 21:30:06.004420 15558 solver.cpp:258] Train net output #0: loss = 21.6953 (* 1 = 21.6953 loss)
I0627 21:30:06.004426 15558 solver.cpp:571] Iteration 0, lr = 0.01
I0627 21:30:28.592690 15558 solver.cpp:242] Iteration 100, loss = 13.6593
I0627 21:30:28.592730 15558 solver.cpp:258] Train net output #0: loss = 13.6593 (* 1 = 13.6593 loss)
I0627 21:30:28.592733 15558 solver.cpp:571] Iteration 100, lr = 0.01

...

I0627 21:37:47.926597 15558 solver.cpp:346] Iteration 2000, Testing net (#0)
I0627 21:37:48.588079 15558 blocking_queue.cpp:50] Data layer prefetch queue empty
I0627 21:40:40.575474 15558 solver.cpp:414] Test net output #0: loss = 13.07728 (* 1 = 13.07728 loss)
I0627 21:40:40.575477 15558 solver.cpp:414] Test net output #1: loss/top-1 = 0.00226
I0627 21:40:40.575487 15558 solver.cpp:414] Test net output #2: loss/top-5 = 0.01204
I0627 21:40:40.708261 15558 solver.cpp:242] Iteration 2000, loss = 13.1739
I0627 21:40:40.708302 15558 solver.cpp:258] Train net output #0: loss = 13.1739 (* 1 = 13.1739 loss)
I0627 21:40:40.708307 15558 solver.cpp:571] Iteration 2000, lr = 0.01

...

I0628 01:28:47.426129 15558 solver.cpp:242] Iteration 49900, loss = 0.960628
I0628 01:28:47.426177 15558 solver.cpp:258] Train net output #0: loss = 0.960628 (* 1 = 0.960628 loss)
I0628 01:28:47.426182 15558 solver.cpp:571] Iteration 49900, lr = 0.01
I0628 01:29:10.084050 15558 solver.cpp:449] Snapshotting to binary proto file train_net/net_iter_50000.caffemodel
I0628 01:29:10.563587 15558 solver.cpp:734] Snapshotting solver state to binary proto filetrain_net/net_iter_50000.solverstate
I0628 01:29:10.692239 15558 solver.cpp:346] Iteration 50000, Testing net (#0)
I0628 01:29:13.192075 15558 blocking_queue.cpp:50] Data layer prefetch queue empty
I0628 01:31:00.595120 15558 solver.cpp:414] Test net output #0: loss = 0.6404232 (* 1 = 0.6404232 loss)
I0628 01:31:00.595124 15558 solver.cpp:414] Test net output #1: loss/top-1 = 0.953861
I0628 01:31:00.595127 15558 solver.cpp:414] Test net output #2: loss/top-5 = 0.998659
I0628 01:31:00.727577 15558 solver.cpp:242] Iteration 50000, loss = 0.680951
I0628 01:31:00.727618 15558 solver.cpp:258] Train net output #0: loss = 0.680951 (* 1 = 0.680951 loss)
I0628 01:31:00.727623 15558 solver.cpp:571] Iteration 50000, lr = 0.0096

这是一个普通的网络训练输出,含有1个loss,可以看出solver.prototxt的部分参数为:
test_interval: 2000
base_lr: 0.01
lr_policy: "step" # or "multistep"
gamma: 0.96
display: 100
stepsize: 50000 # if is "multistep", the first stepvalue is set as 50000
snapshot_prefix: "train_net/net"

当然,上面的分析,即便不理会,对下面的代码也没什么影响,绘制训练曲线本质就是文件操作,从上面的log文件中,我们可以看出:

对于每个出现字段] Iteration和loss =的文本行,含有训练的迭代次数以及损失代价;
对于每个含有字段] Iteration和Testing net (#0)的文本行,含有测试的对应的训练迭代次数;
对于每个含有字段#2:和loss/top-5的文本行,含有测试top-5的精度。

根据这些分析,就可以对文本进行如下处理:
import os
import sys
import numpy as np
import matplotlib.pyplot as plt
import math
import re
import pylab
from pylab import figure, show, legend
from mpl_toolkits.axes_grid1 import host_subplot

# read the log file
fp = open('log.txt', 'r')

train_iterations = []
train_loss = []
test_iterations = []
test_accuracy = []

for ln in fp:
# get train_iterations and train_loss
if '] Iteration ' in ln and 'loss = ' in ln:
arr = re.findall(r'ion \b\d+\b,',ln)
train_iterations.append(int(arr[0].strip(',')[4:]))
train_loss.append(float(ln.strip().split(' = ')[-1]))
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我老婆肾虚,心脑供血不足同怎么办??
松岗豪华公寓我想知道这个在什么地方
私聊双方同意拿了钱这样算不算诈骗了
北京市凯泽同盛科技有限公司怎么去啊,有知道
上品堂茶馆怎么去啊,有知道地址的么
从宜良到黄果树瀑布有几公里
铭美印铁制罐有限公司地址在什么地方,想过去
幼儿园那些课是集体教学 哪些是分组教学
重庆工商大学研究生好吗?学费,就业怎样的?
汉庭酒店启东文峰大世界店在哪里啊,我有事要
魔兽icc教授那P2阶段可以吃满绿水吗,变身buf
云福禅寺我想知道这个在什么地方
想买万家乐的烟灶套装怎么样?
了不起的小叶子读后感
悦来美理发店地址有知道的么?有点事想过去
推荐资讯
新轩逸,卡罗拉,凌派,哪个车,省油,动力好,故障
万和雅居地址在什么地方,我要处理点事
卉旺房产海曙店这个地址在什么地方,我要处理
停车场(宝锦线)地址好找么,我有些事要过去
纤美堂女子瘦身会所这个地址在什么地方,我要
连云港飞阔电子有限公司这个地址在什么地方,
吉祥乳鸽在哪里啊,我有事要去这个地方
李嘉香正宗东北菜馆这个地址在什么地方,我要
原味石磨肠粉(早餐、快餐)在哪里啊,我有事要
领航包裹衣柜门厂厂家批发在哪里啊,我有事要
闲置一边的开口笑,鞋头上莫名其妙的泛红,怎
左言字旁又内怎么念
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?