Pytorch使用TensorBoard绘制Loss曲线——详细教程

TensorBoard是一个机器学习数据可视化的工具,本人一般会使用TensorBoard去实时查看深度学习中loss曲线和学习率。

代码加入

首先在深度学习train代码里加入几句代码~
下面的代码是在每个epoch结束时记录训练损失,并将其写入到TensorBoard中以便于后续的可视化分析。

total_loss_np = Total_loss.detach().cpu().numpy()
            tem_loss.append(total_loss_np)
            # LOSS = np.append(total_loss_np)
            # #######################################################################################

            #from tensorboardX import SummaryWriter
            # 在epoch循环之前加入

            # 在epoch循环内最后一行加入
            # 可以加多行,即画多个图
        writer.add_scalar('loss / train_loss',np.mean(tem_loss) ,global_step=epoch)  # 表示在loss目录下画train_loss图,横坐标为epoch,纵坐标为train_loss

下面的代码是用来设置TensorBoard的记录目录的,其中tensorboard_dir变量定义了TensorBoard日志文件将要保存的位置,而SummaryWriter是来自torch.utils.tensorboard模块的一个类,用于写入事件文件,这样就可以在TensorBoard仪表板上查看训练过程中的各种指标。

tensorboard_dir = "/media/inspur/zhaoyn/deepclear_finetune_train/loss"
    writer = SummaryWriter(tensorboard_dir)  # tensorboard_dir是日志保存的位置

TensorBoard 安装

在命令终端使用pip安装即可:

pip install tensorboard

可以通过以下指令查看安装状态

tensorboard --help

TensorBoard 启动

在终端输入以下命令行启动

tensorboard --logdir /media/inspur/zhaoyn/deepclear_finetune_train/loss

注意
上面命令行里的路径需要修改为你自己的路径。这是log文件的上一个目录,也就是TensorBoard的log文件所在的目录。Tensorboard面板中展示的数据都来源于log文件,一般一次完整的运行生成一份log文件。

进入TensorBoard界面

TensorBoard 启动后,输出了一个网址,说明启动成功:

TensorBoard 2.8.0 at http://localhost:6006/ (Press CTRL+C to quit)

复制网址http://localhost:6006/,在浏览器中输入即可进入TensorBoard界面。

这样就可以在TensorBoard中看到训练损失随epoch变化的趋势图了~

### 如何在 PyTorch 中进行日志记录 #### 使用 Python 内置的日志模块 `logging` 为了监控模型训练,在 PyTorch 中可以利用 Python 的内置库 `logging` 来实现基本的日志功能。通过配置不同的级别,如 DEBUG、INFO、WARNING、ERROR 和 CRITICAL,可以根据需求调整输出的信息量。 ```python import logging logging.basicConfig(level=logging.INFO) def log_metrics(epoch, logs): logging.info(f"Epoch {epoch}: loss = {logs['loss']:.4f}, accuracy = {logs['accuracy']:.4f}") ``` 这段代码设置了日志等级为 INFO,并定义了一个名为 `log_metrics` 函数用于每轮迭代结束时记录损失(loss)和精度(accuracy)[^1]。 #### 利用 TensorBoard 进行高级可视化 除了简单的文本日志外,更推荐的方式是采用 TensorBoard 工具来进行复杂的性能指标跟踪以及数据可视化的操作。这不仅限于绘制曲线图展示 Loss 或 Accuracy 变化趋势,还可以查看网络结构等更多信息。 ```python from torch.utils.tensorboard import SummaryWriter writer = SummaryWriter(log_dir="./runs/experiment_1") for epoch in range(num_epochs): ... writer.add_scalar('Loss/train', running_loss / total_steps, epoch) writer.add_scalar('Accuracy/train', correct_predictions / total_samples, epoch) writer.close() ``` 这里创建了一个指向特定目录 (`./runs/experiment_1`) 的 Writer 对象实例;接着在一个典型的循环体内调用了 add_scalar 方法来存储不同阶段下的数值型变量;最后记得关闭 writer 以释放资源[^3]。 #### 结合 PyTorch-Lightning 自动化管理日志 当项目规模逐渐增大时,手动编写上述逻辑变得繁琐且容易出错。此时可考虑借助框架的力量简化流程——比如 PyTorch-Lightning 提供了一套完善的 API 接口帮助开发者轻松完成这一任务: ```python class MyModel(pl.LightningModule): ... def training_step(self, batch, batch_idx): output = self.forward(batch) loss = F.nll_loss(output, target) metrics = { 'train_loss': loss, 'train_acc': compute_accuracy(output, target), } # 记录到进度条与日志文件中 self.log_dict(metrics, prog_bar=True, logger=True) return {'loss': loss} ``` 在这个例子里面,只需要简单地调用 `self.log()` 或者 `self.log_dict()` 即可在不改变原有业务逻辑的前提下快速集成强大的日志特性[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值