如何将lbfgs优化器与pytorch lightning一起使用?
我在与lightning一起使用pytorch的LBFGS优化器时遇到问题。 我使用来自的模板启动一个新项目,下面是我尝试的代码(仅培训部分): pytorch的LBFGS优化器需要一个闭包函数(请参见和),但我不知道如何在模板中定义它,特别是我不知道如何将批处理数据传递给优化器。我试图定义一个自定义优化器步骤函数,但在闭包函数中传递批处理时遇到了一些问题 我将非常感谢任何帮助我解决这个问题或为我指明正确方向的建议 环境:如何将lbfgs优化器与pytorch lightning一起使用?,pytorch,Pytorch,我在与lightning一起使用pytorch的LBFGS优化器时遇到问题。 我使用来自的模板启动一个新项目,下面是我尝试的代码(仅培训部分): pytorch的LBFGS优化器需要一个闭包函数(请参见和),但我不知道如何在模板中定义它,特别是我不知道如何将批处理数据传递给优化器。我试图定义一个自定义优化器步骤函数,但在闭包函数中传递批处理时遇到了一些问题 我将非常感谢任何帮助我解决这个问题或为我指明正确方向的建议 环境: PyTorch版本:1.2.0+cpu Lightning版本:0.4
- PyTorch版本:1.2.0+cpu
- Lightning版本:0.4.9
- 试管版本:0.7.1
def training_step(self, batch, batch_nb):
x, y = batch
x = x.float()
y = y.float()
y_hat = self.forward(x)
return {'loss': F.mse_loss(y_hat, y)}
def configure_optimizers(self):
optimizer = torch.optim.LBFGS(self.parameters())
return optimizer
def optimizer_step(self, epoch_nb, batch_nb, optimizer, optimizer_i):
def closure():
optimizer.zero_grad()
l = self.training_step(batch, batch_nb)
loss = l['loss']
loss.backward()
return loss
optimizer.step(closure)