ElewiseOperation
功能
常用的逐元素数值计算集合。
算子上下文
图1 ElewiseOperation算子上下文
定义
struct ElewiseParam {
enum ElewiseType: int {
ELEWISE_UNDEFINED = 0,
ELEWISE_CAST,
ELEWISE_MULS,
ELEWISE_COS,
ELEWISE_SIN,
ELEWISE_NEG,
ELEWISE_QUANT,
ELEWISE_LOGICAL_NOT,
ELEWISE_ADD,
ELEWISE_MUL,
ELEWISE_REALDIV,
ELEWISE_LOGICAL_AND,
ELEWISE_LOGICAL_OR,
ELEWISE_LESS,
ELEWISE_GREATER,
ELEWISE_SUB,
ELEWISE_EQUAL,
ELEWISE_QUANT_PER_CHANNEL,
ELEWISE_DEQUANT_PER_CHANNEL,
ELEWISE_DYNAMIC_QUANT,
ELEWISE_TANH
};
struct QuantParam {
float inputScale = 1.0f;
bool asymmetric = false;
int inputOffset = 0;
};
struct MulsParam {
float varAttr = 0.0f;
};
ElewiseType elewiseType = ELEWISE_UNDEFINED;
QuantParam quantParam;
MulsParam mulsParam;
aclDataType outTensorType = ACL_DT_UNDEFINED;
};
参数列表
|
成员名称 |
类型 |
默认值 |
描述 |
|---|---|---|---|
|
elewiseType |
ElewiseType |
ELEWISE_UNDEFINED |
计算类型。
|
|
quantParam |
struct |
- |
量化参数,具体请参见表1。 |
|
mulsParam |
struct |
- |
乘值参数,具体请参见表2。 |
|
outTensorType |
aclDataType |
ACL_DT_UNDEFINED |
指定数据类型转换输出的数据类型。 |
ELEWISE_DYNAMIC_QUANT(逐行动态量化)输入输出描述
|
参数 |
维度 |
数据类型 |
格式 |
描述 |
|---|---|---|---|---|
|
x |
[dim_0,dim_1,...,dim_n] |
float16 |
ND |
输入tensor,n>1。 最后一维H小于等于24576。 若为 |
|
z |
[dim_0,dim_1,...,dim_n] |
int8 |
ND |
量化输出结果。 |
|
scale |
[dim_0,...,dim_n-1] |
float |
ND |
反量化所需的scale。 |
|
offset |
[dim_0,...,dim_n-1] |
float |
ND |
反量化所需的offset,在“asymmetric”为“true”时才返回。当前不支持asymmetric为true的场景。 |
ELEWISE_TANH(逐元素计算双曲正切值)输入输出描述
|
参数 |
维度 |
数据类型 |
格式 |
描述 |
|---|---|---|---|---|
|
x |
[dim_0,...,dim_n] |
float16 |
ND |
输入。 |
|
out |
[dim_0,...,dim_n] |
float16 |
ND |
输出。 |
规格约束
- ELEWISE_ADD、ELEWISE_MUL、ELEWISE_REALDIV、ELEWISE_SUB计算类型将会对输入进行广播后再进行指定操作。
- 输入x、y对应维度的对应值要求相同或至少其中一个为1。
- ElewiseDeQuantPerChannel 只支持
Atlas 800I A2 推理产品 /Atlas A2 训练系列产品 。