在 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)
我想在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)