前言:训练一个网络,需要评价这个网络,并根据评价的结果想一下为什么是这样,怎样去优化这个网络,这样才是一个闭环。
如何评价训练好的网络
首先网络有一个参数是loss值,这反应了你训练好的网络得到的结果和真实值之间的差距。查看loss曲线随着迭代次数的增多,如何变化,有助于查看训练是否过拟合,是否学习率太小。
一. 生成loss变化曲线
1, 训练时保存log文件
nohup ./darknet detector train khadas_ai/khadas_ai.data khadas_ai/yolov3-khadas_ai.cfg_train darknet53.conv.74 -dont_show > train.log 2>&1 &
2, 使用extract_log.py脚本转化所需格式log
import inspect
import os
import random
import sys
def extract_log(log_file,new_log_file,key_word):
with open(log_file, 'r') as f:
with open(new_log_file, 'w') as train_log:
#f = open(log_file)
#train_log = open(new_log_file, 'w')
for line in f:
if 'Syncing' in line:
continue
if 'nan' in line:
continue
if 'Region 82 Avg' in line:
continue
if 'Region 94 Avg' in line:
continue
if 'Region 106 Avg' in line:
continue
if 'total_bbox' in line:
continue
if 'Loaded' in line:
continue
if key_word in line:
train_log.write(line)
f.close()
train_log.close()
def extract_log2(log_file,new_log_file,key_word):
with open(log_file, 'r') as f:
with open(new_log_file, 'w') as train_log:
#f = open(log_file)
#train_log = open(new_log_file, 'w')
for line in f:
if 'Syncing' in line:
continue
if 'nan' in line:
continue
if 'Region 94 Avg' in line:
continue
if 'Region 106 Avg' in line:
continue
if 'to