首先是关于张量轴的思考
M@V矩阵乘法如何组成?
视角1
特殊情况_图示抽象(<,>):(赋权扩展/收缩)
> :当一个维数为1,各自赋予权重,后求和;反向模式是将其expand后赋予权重
<:当另一个维数为1,expand后,各自赋予权重;反向模式是将赋权后其求和
当没有维数为1时(如何分组):标准矩阵乘法
x = x.expand_as(w)
x *= w
x = x.sum(0)
(3,4) = (3).expand_as(3,4)
(3,4) *= (3,4)
(4) = (3,4).sum(0)
是最简单的(连续轴)线性分组 - 往左(-1)expand,往右(0)sum
*(2,3)从分布采样得到init参数;传入的输入是(2),传进去的梯度是(3)
这是最简单的维数转换器
学习如何分组,并且如何赋权扩展/收缩
expand和sum(keepdim=0)这些方法在存在反向模式的情况下
是在变换tensor的维度索引
由此引出
提出的模块
(连续轴x1)线性分组 到 (连续轴x3)线性分组
只有一个矩阵参数的FC,传统矩阵乘法M@V
x,w
(3,_)<(3,4)=(3,4)>(_,5)
x = x.expand_as(w)
x *= w
x = x.sum(0