手动优化和自动优化
自动优化。使用lightning,你不需要担心何时启用/禁用梯度的计算,做反向传播,或者更新优化器等。只要你在training_step中返回一个带有loss的图,Lightning就会自动进行优化。
def training_step(self, batch, batch_idx):
loss = self.encoder(batch)
return loss
手动优化。对于某些研究,如 GAN、强化学习或具有多个优化器或内部循环的,我们可以关闭自动优化并自行完全控制训练循环。
def __init__