【问题标题】:PyTorch - shape of nn.Linear weightsPyTorch - nn.Linear 权重的形状
【发布时间】:2019-04-27 04:23:29
【问题描述】:

昨天偶遇this question,第一次注意到线性层nn.Linear的权重在应用matmul之前需要转置。

Code 用于应用权重:

output = input.matmul(weight.t())


这是什么原因?

为什么权重不是从一开始就处于转置形状,所以不需要每次都在应用层之前进行转置?

【问题讨论】:

  • 谢谢!我正要提交完全相同的问题——干得好,SO的算法建议它可能是重复的。 (他们的理由并不完全正确,因为在使用模型时只使用了前向传递......但最终向后兼容胜过所有其他论点,不是吗。)

标签: matrix neural-network deep-learning matrix-multiplication pytorch


【解决方案1】:

我在这里找到了答案: Efficient forward pass in nn.Linear #2159

这背后似乎没有真正的理由。然而,转置操作似乎并没有减慢计算速度。

根据上面提到的问题,在 forward 传递期间,转置操作在计算方面(几乎)是免费的。而在反向传递期间,省略转置操作实际上会使当前实现的计算效率降低

那期的最后一篇文章总结得很好:

这是历史权重布局,更改它是向后不兼容的。 除非在速度或便利性方面有很大的好处,否则我们 不会破坏用户空间。

https://github.com/pytorch/pytorch/issues/2159#issuecomment-390068272

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-15
    • 2018-07-11
    • 2019-07-21
    • 1970-01-01
    • 2021-09-09
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多