Как использовать оптимизатор lbfgs с pytorch-lightning? - PullRequest
0 голосов
/ 26 сентября 2019

У меня проблема с использованием оптимизатора LBFGS от pytorch с молнией.Я использую шаблон из здесь , чтобы начать новый проект, и вот код, который я пробовал (только обучающая часть):

    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)

Оптимизатору LBFGS из pytorch требуется функция закрытия(см. здесь и здесь ), но я не знаю, как определить его внутри шаблона, особенно я не знаю, как данные пакета передаются оптимизатору.Я попытался определить пользовательскую функцию optimizer_step, но у меня есть некоторые проблемы с передачей пакета внутри функции закрытия.

Я буду очень благодарен за любой совет, который поможет мне решить эту проблему или укажет мне правильное направление.

Среда:
  • Версия PyTorch: 1.2.0 + процессор
  • Версия с подсветкой: 0.4.9
  • Версия с пробиркой: 0.7.1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...