如何解决如何在 PyTorch Lightning 中获得所有时期的逐步验证损失曲线
在 PyTorch Lightning 中的 validation_step()
中记录我的验证损失时:
def validation_step(self,batch: Tuple[Tensor,Tensor],_batch_index: int) -> None:
inputs_batch,labels_batch = batch
outputs_batch = self(inputs_batch)
loss = self.criterion(outputs_batch,labels_batch)
self.log('loss (valid)',loss.item())
然后,我得到了一个 epoch-wise 损失曲线:
如果我想要逐步的损失曲线,我可以设置on_step=True
:
def validation_step(self,labels_batch)
self.log('loss',loss.item(),on_step=True)
这会导致每个时期的逐步损失曲线:
我怎样才能获得所有时期的单一图表?当我的训练运行数千个时期时,这会变得混乱。
解决方法
似乎您在初始化记录器时做错了什么。是否定义如下:
logger = TensorBoardLogger("tb_logs",name="my_model")
请注意,on_step
会修改您的标签,这也是它们显示为单独图像的原因之一。
您可以使用以下方法代替 on_step:
self.logger.experiment.add_scalar('name',metric)
如果您希望图 x 轴显示时期数而不是步骤数,您可以将记录器放在 validation_epoch_end(self,outputs)
内。
def validation_epoch_end(self,outputs):
avg_loss = torch.stack([x["val_loss"] for x in outputs]).mean()
self.logger.experiment.add_scalar('loss',avg_loss,self.current_epoch)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。