PyTorch-nn的形状线性权重

时间:2018-11-25 07:48:07

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

昨天我碰到了this question,并且第一次注意到线性层nn.Linear的权重需要在应用matmul之前进行调换。

Code来应用权重:

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


这是什么原因?

为什么权重从一开始就不处于移置形状,因此在应用图层之前不必每次都进行移置?

1 个答案:

答案 0 :(得分:3)

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

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

根据上述问题,在前进过程中,转置操作在计算方面几乎(免费)。在向后传递期间,省去转置操作实际上会使当前实现的计算效率降低

该期的最后一篇文章很好地总结了这一点:

  

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

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