Linear计算功能。
输入x / weight矩阵维度,通过transposeA / transposeB配置要满足矩阵乘的维度关系。
// matmul+add struct LinearParam { bool transposeA = false; // 是否转置A矩阵 bool transposeB = true; // 是否转置B矩阵 bool hasBias = true; // 是否叠加偏置 aclDataType outDataType = ACL_DT_UNDEFINED; // 输出数据类型 };
成员名称 |
描述 |
---|---|
transposeA |
是否转置A矩阵,默认不转置。 当输入x的维度为3时,transposeA必须为false。 在Atlas 推理系列产品(Ascend 310P AI处理器)中,量化情况下,transposeA必须为false。 |
transposeB |
是否转置B矩阵,默认转置。 在Atlas 推理系列产品(Ascend 310P AI处理器)中,量化情况下,transposeB必须为true。 |
hasBias |
是否叠加偏置。 |
outDataType |
输出数据类型。默认为ACL_DT_UNDEFINED,表示输出数据类型与输入一致。 |
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
x |
[batch, m, k] 或 [m,k] 当y为ND或NZ格式时,支持以下维度输入: 当y为NZ格式时,额外支持以下维度输入: |
float16/bfloat16/int8 |
ND |
矩阵乘A矩阵。 |
weight |
格式为ND时:[k, n] 格式为NZ时: 额外支持 [1, n/16, k, 16](浮点)或 [1, n/32, k, 32](量化) |
float16/bfloat16/int8 |
ND/NZ |
矩阵乘B矩阵。格式为NZ且为四维输入时,倒数第二维为16(浮点)/32(量化)的整数倍。 |
bias |
[1, n] / [n] |
float16/bfloat16/int32 |
ND |
当hasBias = true时才输入。 当linearType为0时,数据类型为float16; 当linearType为1时,数据类型为bfloat16; 当linearType为2或3时,数据类型为int32; |
deqScale |
[1, n] / [n] |
uint64/int64 |
ND |
反量化的Scale。量化时输入 |
参数 |
维度 |
数据类型 |
格式 |
---|---|---|---|
output |
[batch, m, n] 或 [m ,n](与x对应) |
float16/bfloat16 |
ND |