如何用Matplotlib绘制损失曲线?

问题描述 投票:0回答:1

我正在使用 Pytorch Lighting 和 Tensorboard,因为 PyTorch Forecasting 库是使用它们构建的。我想通过 matplotlib 创建自己的损失曲线,并且不想使用 Tensorboard。

可以通过方法访问每个时期的指标吗?验证损失、训练损失等?

我的代码如下:

logger = TensorBoardLogger("logs", name = "model")
trainer = pl.Trainer(#Some params)

记录员或培训师有任何方法可以访问此信息吗?

PL 文档不清楚,有很多与记录器和训练器相关的方法。

python tensorboard pytorch-lightning
1个回答
4
投票

我的建议是你:

  1. 创建 csv 记录器:
from pytorch_lightning.loggers import CSVLogger

csv_logger = CSVLogger(
    save_dir='./',
    name='csv_file'
)
  1. 交给你的教练
# Initialize a trainer
trainer = Trainer(
    accelerator="auto",
    max_epochs=1,
    log_every_n_steps=10,
    logger=[csv_logger],
)
  1. 让你的模型记录你的纪元结果。这将触发 CSVlogger 向 txt 文件写入操作
class MNISTModel(LightningModule):
    def __init__(self):
        super().__init__()
        self.l1 = torch.nn.Linear(28 * 28, 10)

    def forward(self, x):
        return torch.relu(self.l1(x.view(x.size(0), -1)))

    def training_step(self, batch, batch_nb):
        x, y = batch
        loss = F.cross_entropy(self(x), y)
        self.log('loss_epoch', loss, on_step=False, on_epoch=True)
        return loss

    def configure_optimizers(self):
        return torch.optim.Adam(self.parameters(), lr=0.02)
  1. 使用 CSV 文件中记录的值来绘制结果。通过这种方式,如果您对情节不满意,您可以通过修改情节脚本重新运行所有内容,而不必等待训练再次结束。
© www.soinside.com 2019 - 2024. All rights reserved.