深度学习笔记(一)记录训练过程
深度学习笔记(一)记录训练过程 前言一、tensorboardX中SummaryWriter记录训练过程二、总结前言本帖子主要记录深度学习编程过程中的一些笔记,欢迎指导批评。博主使用的是 win11+CUDA11.4.0+CUDNN11.4+pytorch1.10+python3.6的配置环境,在pycharm中编程。提示:以下是本篇文章正文内容,部分内容参考自pytorch官网文档。一、tens
·
深度学习笔记(一)记录训练过程
前言
本帖子主要记录深度学习编程过程中的一些笔记,欢迎指导批评。博主使用的是 win11+CUDA11.4.0+CUDNN11.4+pytorch1.10+python3.6的配置环境,在pycharm中编程。
提示:以下是本篇文章正文内容,部分内容参考自pytorch官网文档。
一、tensorboardX中SummaryWriter记录训练过程
这里引入一段代码用来说明需要记录什么深度学习过程中的那些数据,将结合具体的程序段进行说明。程序源码来自于此链接。
以下为程序源码:
- 需要记录的数据有:训练的模型名称、学习率等超参相关设定、模型迭代的次数、训练过程中的损失函数值以及训练过程中评价指标所对应的值;
- 将训练过程中的数据,如训练集与验证集上的结果保存为字典形式;
- 建立writer,对训练过程数据进行保存。
SUM_FREQ = 100
class Logger:
def __init__(self, model, scheduler):
self.model = model
self.scheduler = scheduler
self.total_steps = 0
self.running_loss = {}
self.writer = None
# 展示保存的评价指标数据 模型每一百次迭代记录一次
def _print_training_status(self):
metrics_data = [self.running_loss[k] / SUM_FREQ for k in sorted(self.running_loss.keys())]
training_str = "[{:6d}, {:10.7f}] ".format(self.total_steps + 1, self.scheduler.min_lrs[0])
metrics_str = ("{:10.4f}, " * len(metrics_data)).format(*metrics_data)
# print the training status
# print(training_str + metrics_str)
# 建立writer
if self.writer is None:
self.writer = SummaryWriter()
# 第一次写入训练集上的过程数据
for k in self.running_loss:
self.writer.add_scalar(k, self.running_loss[k] / SUM_FREQ, self.total_steps)
self.running_loss[k] = 0.0
# 将训练集上的过程数据保存为字典形式
def push(self, metrics):
self.total_steps += 1
for key in metrics:
if key not in self.running_loss:
self.running_loss[key] = 0.0
self.running_loss[key] += metrics[key]
if self.total_steps % SUM_FREQ == SUM_FREQ - 1:
self._print_training_status()
self.running_loss = {}
# 保存验证集上的过程数据
def write_dict(self, results):
if self.writer is None:
self.writer = SummaryWriter()
# 第二次写入验证集上的过程数据
for key in results:
self.writer.add_scalar(key, results[key], self.total_steps)
def close(self):
self.writer.close()
二、总结
熟练地使用tensorboardX中的SummaryWriter可以是训练过程可视化,用图表的形式展示训练过程,便于查看模型在什么时刻趋于收敛以及查看模型训练过程中的是否存在异常,如:训练集与验证集测试结果相差较大等问题。
更多推荐
已为社区贡献1条内容
所有评论(0)