blu*_*nox 5 matrix matrix-multiplication neural-network deep-learning pytorch
昨天我遇到了这个问题,第一次注意到线性层的权重nn.Linear
需要在应用之前进行转置matmul
。
应用权重的代码:
output = input.matmul(weight.t())
Run Code Online (Sandbox Code Playgroud)
这是什么原因呢?
为什么权重不是从一开始就处于转置形状,因此不需要每次在应用图层之前都进行转置?
我在这里找到了答案: Efficient Forward Pass in nn.Linear #2159
这背后似乎没有真正的理由。然而,转置操作似乎并没有减慢计算速度。
根据上述问题,在前向传递期间,转置操作在计算方面(几乎)是免费的。而在向后传递过程中,省略转置操作实际上会使当前实现的计算效率降低。
该期的最后一篇文章总结得很好:
它是历史权重布局,更改它是向后不兼容的。除非在速度或便利性方面有一些巨大的好处,否则我们不会破坏用户空间。
https://github.com/pytorch/pytorch/issues/2159#issuecomment-390068272
归档时间: |
|
查看次数: |
2978 次 |
最近记录: |