LinearOperation
功能
将A、B两个矩阵进行矩阵乘运算,同时可以选择对矩阵乘的运算结果添加偏置或进行反量化操作。
算子本质上是接收x和weight两个输入tensor作为A矩阵和B矩阵进行矩阵乘运算,可通过参数“transposeA”与“transposeB”控制做矩阵乘前是否需要对A矩阵和B矩阵进行行列转置,根据参数转置后的A矩阵和B矩阵需满足矩阵乘维度关系,即A矩阵最后一维与B矩阵第0维相等。
该算子分为浮点和量化两类,可通过输出数据类型进行选择。

约束
在
定义
struct LinearParam { bool transposeA = false; // 是否转置A矩阵 bool transposeB = true; // 是否转置B矩阵 bool hasBias = true; // 是否叠加偏置 aclDataType outDataType = ACL_DT_UNDEFINED; // 输出数据类型 };
成员
成员名称 |
描述 |
---|---|
transposeA |
是否转置A矩阵,默认不转置。 当输入x的维度为3时,transposeA必须为false。 在 |
transposeB |
是否转置B矩阵,默认转置。 在 |
hasBias |
是否叠加偏置。 在 |
outDataType |
输出数据类型。
|
输入
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
x |
[batch, m, k] 或 [m,k] |
|
ND |
矩阵乘A矩阵。 |
weight |
|
|
ND/NZ |
权重,矩阵乘的B矩阵。格式为NZ且为四维时:
数据类型需与x一致。 |
bias |
[1, n] 或 [n] |
|
ND |
叠加的偏置矩阵,hasBias为true时输入。浮点时数据结构与x一致。 |
deqScale |
[1, n] 或 [n] |
|
ND |
反量化的Scale。量化时输入。 |
输出
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
output |
[batch, m, n] 或 [m ,n] |
float16/bfloat16 |
ND |
输出Tensor。维度数与x一致。
|