Как изменить оптимизацию по умолчанию в центре внимания с pytorch, например torch.optim.SGD? - PullRequest
0 голосов
/ 20 февраля 2019

В настоящее время я использую прожектор https://github.com/maciejkula/spotlight/tree/master/spotlight для реализации факторизации матрицы в рекомендательной системе.Прожектор основан на Pytorch, это интегрированная платформа, реализующая RS.В центре внимания / факторизации / явном, он использует torch.optim.Adam в качестве оптимизатора, я хочу изменить его на torch.optim.SGD.Я пытался

emodel = ExplicitFactorizationModel(n_iter=15,
                                embedding_dim=32, 
                                use_cuda=False,
                                loss='regression',
                                l2=0.00005,
                                optimizer_func=optim.SGD(lr=0.001, momentum=0.9))

, но он дает: TypeError: init () отсутствует 1 обязательный позиционный аргумент: 'params' Есть предложения?

1 Ответ

0 голосов
/ 20 февраля 2019

Вы можете использовать partial из functools, чтобы сначала установить скорость обучения и импульс, а затем передать этот класс ExplicitFactorizationModel.Что-то вроде:

from functools import partial
SDG_fix_lr_momentum = partial(torch.optim.SGD, lr=0.001, momentum=0.9)
emodel = ExplicitFactorizationModel(n_iter=15,
                                embedding_dim=32, 
                                use_cuda=False,
                                loss='regression',
                                l2=0.00005,
                                optimizer_func=SDG_fix_lr_momentum)
...