【问题标题】:create a linear model with fixed weights in Pytorch在 Pytorch 中创建具有固定权重的线性模型
【发布时间】:2021-09-21 00:33:24
【问题描述】:

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

例如模型的权重值:

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

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

【问题讨论】:

    标签: python neural-network pytorch


    【解决方案1】:

    您可以通过将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)
    

    【讨论】:

    • 和权重的初始化?我必须在类内进行初始化吗?因为我有一个由几种架构组成的模型......对于第二个解决方案?权重矩阵的必要形状是什么?
    • 你可以使用两者中的任何一个,假设你已经定义了weights,就像你在上面的问题中所做的那样。
    • 非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    相关资源
    最近更新 更多