文件夹下内容:

文件夹布局:
—— 绘制损失函数曲线
—— —— drwaLossFunction.py
—— —— loadFromPickle.py
—— —— drwaLossCurve_tensorboard.py
—— —— drwaLossCurve_matplotlib.py
文件: drwaLossFunction.py
# 获取训练世代和相应损失值
import os
import pickle
def createPickleFiles():
'''用于生成三个pickle文件,分别用于保存训练世代数、置信度损失和定位损失'''
myFolderPath = r'logs'
files = os.listdir(myFolderPath) # 列表类型 元素是文件名 字符串类型
files.sort(
key=lambda x:int(x[5:x.index('-')]),
reverse=False) # 按照训练世代排序
loss4loc = list() # 记录定位损失
loss4cof = list() # 记录置信度损失
record4epoch = list() # 记录训练世代数
for item in files:
info = item.split('-')
record4epoch.append(int(info[0][5:]))
loss4loc.append(float(info[1][3:]))
loss4cof.append(float(info[2][4:-4]))
with open('绘制损失函数曲线/临时文件-EPOCH.pickle','wb') as file4epoch:
pickle.dump(record4epoch,file4epoch) # 保存世代信息
with open('绘制损失函数曲线/临时文件-LOSS4CONFIDENT.pickle','wb') as file4conf:
pickle.dump(loss4cof,file4conf) # 保存置信度损失信息
with open('绘制损失函数曲线/临时文件-LOSS4LOCATION.pickle','wb') as file4loc:
pickle.dump(loss4loc,file4loc) # 保存定位损失信息
if __name__ == '__main__':
createPickleFiles()
文件: loadFromPickle.py
# 从pickle文件中加载世代数和相应损失
import pickle
def getInfo():
'''返回三个列表,分别用于保存世代、置信度损失和定位损失'''
info = list()
fileNames = [
'绘制损失函数曲线/临时文件-EPOCH.pickle',
'绘制损失函数曲线/临时文件-LOSS4CONFIDENT.pickle',
'绘制损失函数曲线/临时文件-LOSS4LOCATION.pickle'] # 三个文件的名字
for name in fileNames:
with open(name, 'rb') as f:
item = pickle.load(f)
info.append(item)
return info
if __name__ == '__main__':
info = getInfo()
# print(info[0]) # 世代
# print(info[1]) # 置信度损失
# print(info[2]) # 定位损失
文件: drwaLossCurve_tensorboard.py
from torch.utils.tensorboard import SummaryWriter
import loadFromPickle
import drwaLossFunction
drwaLossFunction.createPickleFiles()
info = loadFromPickle.getInfo()
writer = SummaryWriter('绘制损失函数曲线/单独绘制')
for epoch, conf, loc in zip(*info):
writer.add_scalar('置信度损失', conf, epoch)
writer.add_scalar('定位损失', loc, epoch)
writer.close()
writer = SummaryWriter('绘制损失函数曲线/三者对比')
for epoch, conf, loc in zip(*info):
writer.add_scalars('损失函数', {'conf':conf,
'loc':loc,
'conf + loc': conf + loc}, epoch)
writer.close()
# '''
# tensorboard --logdir=绘制损失函数曲线
# '''
文件: drwaLossCurve_matplotlib.py
# 使用matplotlib绘制损失函数曲线
import drwaLossFunction
import loadFromPickle
import matplotlib
import matplotlib.pyplot as plt
matplotlib.rcParams['font.family'] = 'SimHei' # 'SimHei' # 'STSong'
matplotlib.rcParams['font.size'] = 15 # 修改字体大小
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
drwaLossFunction.createPickleFiles()
info = loadFromPickle.getInfo()
epoch, conf, loc = info
plt.plot(epoch, loc,'rx-.', label='定位损失')
plt.plot(epoch, conf, 'go-', label='置信度损失')
plt.xlabel('训练世代: epoch')
plt.ylabel('损失值: loss')
plt.legend(loc='upper right', frameon=True)
plt.show()
5619

被折叠的 条评论
为什么被折叠?



