如何从 pytorch 更改聚光灯下的默认优化,例如torch.optim.SGD?
How to change default optimization in spotlight from pytorch e.g. torch.optim.SGD?
我目前正在使用聚光灯 https://github.com/maciejkula/spotlight/tree/master/spotlight
在推荐系统中实现矩阵分解。 spotlight基于pytorch,是一个实现RS的集成平台。在spotlight/factorization/explicit中,它使用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))
但它 gives:TypeError:init() 缺少 1 个必需的位置参数:'params'
有什么建议吗?
您可以使用 functools
中的 partial
首先设置学习率和动量,然后将此 class 传递给 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)
我目前正在使用聚光灯 https://github.com/maciejkula/spotlight/tree/master/spotlight 在推荐系统中实现矩阵分解。 spotlight基于pytorch,是一个实现RS的集成平台。在spotlight/factorization/explicit中,它使用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))
但它 gives:TypeError:init() 缺少 1 个必需的位置参数:'params' 有什么建议吗?
您可以使用 functools
中的 partial
首先设置学习率和动量,然后将此 class 传递给 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)