如何用Matplotlib绘制损失曲线?

num*_*soz 2 python tensorboard pytorch-lightning

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

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

我的代码如下:

logger = TensorBoardLogger("logs", name = "model")
trainer = pl.Trainer(#Some params)
Run Code Online (Sandbox Code Playgroud)

记录员或培训师是否有任何方法来访问此信息?

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

Mik*_*e B 5

我的建议是你:

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

csv_logger = CSVLogger(
    save_dir='./',
    name='csv_file'
)
Run Code Online (Sandbox Code Playgroud)
  1. 将其传递给您的教练
# Initialize a trainer
trainer = Trainer(
    accelerator="auto",
    max_epochs=1,
    log_every_n_steps=10,
    logger=[csv_logger],
)
Run Code Online (Sandbox Code Playgroud)
  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)
Run Code Online (Sandbox Code Playgroud)
  1. 使用 CSV 文件中记录的值来绘制结果。通过这种方式,如果您对绘图不满意,您可以通过修改绘图脚本重新运行所有内容,而不必等待训练再次结束。