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)
这是可以实现的吗?如果是这样,我该怎么办?或者有替代的线性函数吗?
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)
或者,给定输入x
shape (n, 4)
,您可以使用简单的矩阵乘法计算结果,如下所示:
>>> x@weights
# equivalent to torch.matmul(x, weights)
Run Code Online (Sandbox Code Playgroud)