Ошибка реализации torch.optim.lr_scheduler.LambdaLR в Pytorch - PullRequest
1 голос
/ 05 апреля 2020

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

lr_find_epochs = 2
start_lr = 1e-7
end_lr = 0.1
# Set up the model, optimizer and loss function for the experiment

optimizer = torch.optim.SGD(model.parameters(), start_lr)
criterion = nn.NLLLoss()
# LR function lambda

lr_lambda = lambda x: math.exp(x * math.log(end_lr / start_lr) / (lr_find_epochs * len( train_loader)))
scheduler = torch.optim.lr_scheduler.LambdaLR(optimizer, lr_lambda=lr_lambda)

и это ошибка, которую я имею: local variable 'values' referenced before assignment

Ошибка в lr_scheduler.py.

1 Ответ

1 голос
/ 05 апреля 2020

Проблема вызвана этой строкой здесь

scheduler = torch.optim.lr_scheduler.LambdaLR(optimizer, lr_lambda=lr_lambda)

Поскольку ошибка предполагает, что вы пытаетесь ссылаться на значение до того, как оно будет присвоено, то есть лямбда-функция вызывается сама с собой в качестве аргумента, который в данный момент не назначен ни на что. В результате этого возникает ошибка в lr_scheduler.py

Возможно, вы хотите передать что-то еще в лямбда-функцию.

...