在 Pytorch 中创建一个具有固定权重的线性模型

create a linear model with fixed weights in Pytorch

我想在PyTorch下创建一个单层的线性网络,但我希望权重手动初始化并保持固定。

例如模型的权重值:

layer = nn.Linear(4, 1, bias=False)
weights = tensor([[ 0.6],
                  [0.25],
                  [ 0.1],
                  [0.05]], dtype=torch.float64)

这可以实现吗?如果是这样,我该怎么做?或者有替代的线性函数吗?

您可以通过将 requires_grad 设置为 False 来冻结图层:

layer.requires_grad_(False)

这样就不会计算 layer 参数的梯度。

或者在初始化参数的时候直接定义so:

layer = nn.Linear(4, 1, bias=False)
layer.weight = nn.Parameter(weights, requires_grad=False)

或者,给定输入 x 形状 (n, 4),您可以使用简单的矩阵乘法计算结果:

>>> x@weights 
# equivalent to torch.matmul(x, weights)