Pytorch-Lightning中模型保存与加载

Pytorch-Lightning中模型保存与加载

保存

自动保存

from lightning.pytorch.callbacks import ModelCheckpoint

class LitAutoEncoder(LightningModule):
    def validation_step(self, batch, batch_idx):
        x, y = batch
        y_hat = self.backbone(x)

        # 1. 计算loss
        loss = F.cross_entropy(y_hat, y)

        # 2. log `val_loss`
        self.log("val_loss", loss)

# 3. 初始化回调,监视 'val_loss'
checkpoint_callback = ModelCheckpoint(monitor="val_loss")

# 4. 向Trainer添加回调
trainer = Trainer(callbacks=[checkpoint_callback])

手动保存

model = MyLightningModule(hparams)
trainer.fit(model)
trainer.save_checkpoint("example.ckpt")
  • 不推荐,在分布性训练环境中有产生死锁的风险

加载

使用load_from_checkpoint()

model = MyLightingModule.load_from_checkpoint(PATH)

使用Trainer中恢复

model = LitModel()
trainer = Trainer()
# 自动恢复模型
trainer.fit(model, ckpt_path="some/path/to/my_checkpoint.ckpt")

超参数保存与覆盖

class LitModel(LightningModule):
    def __init__(self, in_dim, out_dim):
        super().__init__()
        # 保存超参数到hparams属性中
        self.save_hyperparameters()
        self.l1 = nn.Linear(self.hparams.in_dim, self.hparams.out_dim)
# 假设训练并保存了这个模型到PATH路径
LitModel(in_dim=32, out_dim=10)

# 使用in_dim=32, out_dim=10
model = LitModel.load_from_checkpoint(PATH)

# 覆盖ckpt文件中的超参数,in_dim=128, out_dim=10
model = LitModel.load_from_checkpoint(PATH, in_dim=128, out_dim=10)
  • 10
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值