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

Dri*_*iss 2 python neural-network pytorch

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

例如模型的权重值:

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

在此输入图像描述

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

Iva*_*van 6

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

layer.requires_grad_(False)
Run Code Online (Sandbox Code Playgroud)

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

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

layer = nn.Linear(4, 1, bias=False)
layer.weight = nn.Parameter(weights, requires_grad=False)
Run Code Online (Sandbox Code Playgroud)

或者,给定输入xshape (n, 4),您可以使用简单的矩阵乘法计算结果,如下所示:

>>> x@weights 
# equivalent to torch.matmul(x, weights)
Run Code Online (Sandbox Code Playgroud)