transform/nonlinear_fuc_ops_declare.cc

291 lines
10 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Copyright 2019-2021 Huawei Technologies Co., Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "transform/graph_ir/op_declare/nonlinear_fuc_ops_declare.h"
namespace mindspore::transform {
// Relu
INPUT_MAP(Relu) = {{1, INPUT_DESC(x)}};
//输入映射x的索引为1
ATTR_MAP(Relu) = EMPTY_ATTR_MAP;
//属性映射,空
OUTPUT_MAP(Relu) = {{0, OUTPUT_DESC(y)}};
//输出映射y的索引为0
REG_ADPT_DESC(Relu, prim::kPrimRelu->name(), ADPT_DESC(Relu))
// 注册Relu操作的适配器描述prim::kPrimRelu->name()
// ReluV2
INPUT_MAP(ReluV2) = {{1, INPUT_DESC(x)}};
// 输入映射x的索引为1
ATTR_MAP(ReluV2) = EMPTY_ATTR_MAP;
// 属性映射,空
OUTPUT_MAP(ReluV2) = {{0, OUTPUT_DESC(y)}, {1, OUTPUT_DESC(mask)}};
// 输出映射y的索引为0mask索引为1
REG_ADPT_DESC(ReluV2, kNameReluV2, ADPT_DESC(ReluV2))
// 注册ReluV2操作的适配器描述kNameReluV2
// Elu
INPUT_MAP(Elu) = {{1, INPUT_DESC(x)}};
// 输入映射x的索引为1
ATTR_MAP(Elu) = {{"alpha", ATTR_DESC(alpha, AnyTraits<float>())}};
// 属性映射,属性"alpha"的类型为float
OUTPUT_MAP(Elu) = {{0, OUTPUT_DESC(y)}};
// 输出映射y的索引为0
REG_ADPT_DESC(Elu, kNameElu, ADPT_DESC(Elu))
// 注册Elu操作的适配器描述kNameElu
// EluGrad
INPUT_MAP(EluGrad) = {{1, INPUT_DESC(grads)}, {2, INPUT_DESC(activations)}};
// 输入映射有两个x的索引为1activations索引为2
ATTR_MAP(EluGrad) = EMPTY_ATTR_MAP;
// 属性映射,空
OUTPUT_MAP(EluGrad) = {{0, OUTPUT_DESC(y)}};
// 输出映射y的索引为0
REG_ADPT_DESC(EluGrad, kNameEluGrad, ADPT_DESC(EluGrad))
// 注册EluGrad操作的适配器描述kNameEluGrad
// PRelu
INPUT_MAP(PRelu) = {{1, INPUT_DESC(x)}, {2, INPUT_DESC(weight)}};
// 输入映射有两个x的索引为1weight索引为2
ATTR_MAP(PRelu) = EMPTY_ATTR_MAP;
// 属性映射,空
OUTPUT_MAP(PRelu) = {{0, OUTPUT_DESC(y)}};
// 输出映射y的索引为0
REG_ADPT_DESC(PRelu, kNamePrelu, ADPT_DESC(PRelu))
// 注册PRelu操作的适配器描述kNamePrelu
// PReluGrad
INPUT_MAP(PReluGrad) = {{1, INPUT_DESC(grads)}, {2, INPUT_DESC(features)}, {3, INPUT_DESC(weights)}};
// 输入映射有三个grads的索引为1features索引为2weights索引为3
ATTR_MAP(PReluGrad) = EMPTY_ATTR_MAP;
// 属性映射,空
OUTPUT_MAP(PReluGrad) = {{0, OUTPUT_DESC(dx)}, {1, OUTPUT_DESC(da)}};
// 输出映射dx的索引为0da索引为1
REG_ADPT_DESC(PReluGrad, kNamePreluGrad, ADPT_DESC(PReluGrad))
// 注册PReluGrad操作的适配器描述kNamePreluGrad
// Selu
INPUT_MAP(Selu) = {{1, INPUT_DESC(x)}};
// 输入映射x的索引为1
ATTR_MAP(Selu) = EMPTY_ATTR_MAP;
// 属性映射,空
OUTPUT_MAP(Selu) = {{0, OUTPUT_DESC(y)}};
// 输出映射y的索引为0
REG_ADPT_DESC(Selu, kNameSelu, ADPT_DESC(Selu))
// 注册Selu操作的适配器描述kNameSelu
// Sigmoid
INPUT_MAP(Sigmoid) = {{1, INPUT_DESC(x)}};
// 输入映射x的索引为1
ATTR_MAP(Sigmoid) = EMPTY_ATTR_MAP;
// 属性映射,空
OUTPUT_MAP(Sigmoid) = {{0, OUTPUT_DESC(y)}};
// 输出映射y的索引为0
REG_ADPT_DESC(Sigmoid, kNameSigmoid, ADPT_DESC(Sigmoid))
// 注册Sigmoid操作的适配器描述kNameSigmoid
// SigmoidGrad
INPUT_MAP(SigmoidGrad) = {{1, INPUT_DESC(y)}, {2, INPUT_DESC(dy)}};
// 输入映射有两个y的索引为1dy索引为2
ATTR_MAP(SigmoidGrad) = EMPTY_ATTR_MAP;
// 属性映射,空
OUTPUT_MAP(SigmoidGrad) = {{0, OUTPUT_DESC(z)}};
// 输出映射y的索引为0
REG_ADPT_DESC(SigmoidGrad, kNameSigmoidGrad, ADPT_DESC(SigmoidGrad))
// 注册SigmoidGrad操作的适配器描述kNameSigmoidGrad
// HardSwish
INPUT_MAP(HardSwish) = {{1, INPUT_DESC(x)}};
// 输入映射x的索引为1
ATTR_MAP(HardSwish) = EMPTY_ATTR_MAP;
// 属性映射,空
OUTPUT_MAP(HardSwish) = {{0, OUTPUT_DESC(y)}};
// 输出映射y的索引为0
REG_ADPT_DESC(HardSwish, kNameHSwish, ADPT_DESC(HardSwish))
// 注册HardSwish操作的适配器描述kNameHSwish
// HardSwishGrad
INPUT_MAP(HardSwishGrad) = {{1, INPUT_DESC(grad)}, {2, INPUT_DESC(x)}};
// 输入映射有两个grad的索引为1x索引为2
ATTR_MAP(HardSwishGrad) = EMPTY_ATTR_MAP;
// 属性映射,空
OUTPUT_MAP(HardSwishGrad) = {{0, OUTPUT_DESC(y)}};
// 输出映射y的索引为0
REG_ADPT_DESC(HardSwishGrad, kNameHSwishGrad, ADPT_DESC(HardSwishGrad))
// 注册HardSwishGrad操作的适配器描述kNameHSwishGrad
// HSigmoid
INPUT_MAP(HardSigmoid) = {{1, INPUT_DESC(input_x)}};
// 输入映射input_x的索引为1
ATTR_MAP(HardSigmoid) = {{"alpha", ATTR_DESC(alpha, AnyTraits<float>())},
{"beta", ATTR_DESC(beta, AnyTraits<float>())}};
// 属性映射,属性"alpha""beta"的类型为float
OUTPUT_MAP(HardSigmoid) = {{0, OUTPUT_DESC(output_y)}};
// 输出映射y的索引为0
REG_ADPT_DESC(HardSigmoid, kNameHSigmoid, ADPT_DESC(HardSigmoid))
// 注册HardSigmoid操作的适配器描述kNameHSigmoid
// Relu6
INPUT_MAP(Relu6) = {{1, INPUT_DESC(x)}};
// 输入映射x的索引为1
ATTR_MAP(Relu6) = EMPTY_ATTR_MAP;
// 属性映射,空
OUTPUT_MAP(Relu6) = {{0, OUTPUT_DESC(y)}};
// 输出映射y的索引为0
REG_ADPT_DESC(Relu6, kNameReLU6, ADPT_DESC(Relu6))
// 注册Relu6操作的适配器描述kNameReLU6
// Relu6Grad
INPUT_MAP(Relu6Grad) = {{1, INPUT_DESC(gradients)}, {2, INPUT_DESC(features)}};
// 输入映射有两个gradients的索引为1features索引为2
ATTR_MAP(Relu6Grad) = EMPTY_ATTR_MAP;
// 属性映射,空
OUTPUT_MAP(Relu6Grad) = {{0, OUTPUT_DESC(backprops)}};
// 输出映射backprops的索引为0
REG_ADPT_DESC(Relu6Grad, kNameReLU6Grad, ADPT_DESC(Relu6Grad))
// 注册Relu6Grad操作的适配器描述kNameReLU6Grad
// Softsign
INPUT_MAP(Softsign) = {{1, INPUT_DESC(x)}};
// 输入映射x的索引为1
ATTR_MAP(Softsign) = EMPTY_ATTR_MAP;
// 属性映射,空
OUTPUT_MAP(Softsign) = {{0, OUTPUT_DESC(y)}};
// 输出映射y的索引为0
REG_ADPT_DESC(Softsign, kNameSoftsign, ADPT_DESC(Softsign))
// 注册Softsign操作的适配器描述kNameSoftsign
// Softplus
INPUT_MAP(Softplus) = {{1, INPUT_DESC(x)}};
// 输入映射x的索引为1
ATTR_MAP(Softplus) = EMPTY_ATTR_MAP;
// 属性映射,空
OUTPUT_MAP(Softplus) = {{0, OUTPUT_DESC(y)}};
// 输出映射y的索引为0
REG_ADPT_DESC(Softplus, kNameSoftplus, ADPT_DESC(Softplus))
// 注册Softplus操作的适配器描述 kNameSoftplus
// SoftplusGrad
INPUT_MAP(SoftplusGrad) = {{1, INPUT_DESC(gradients)}, {2, INPUT_DESC(features)}};
// 输入映射有两个gradients的索引为1features索引为2
ATTR_MAP(SoftplusGrad) = EMPTY_ATTR_MAP;
// 属性映射,空
OUTPUT_MAP(SoftplusGrad) = {{0, OUTPUT_DESC(backprops)}};
// 输出映射backprops的索引为0
REG_ADPT_DESC(SoftplusGrad, kNameSoftplusGrad, ADPT_DESC(SoftplusGrad))
// 注册SoftplusGrad操作的适配器描述kNameSoftplusGrad
// ReluGrad
INPUT_MAP(ReluGrad) = {{1, INPUT_DESC(gradients)}, {2, INPUT_DESC(features)}};
// 输入映射有两个gradients的索引为1features索引为2
ATTR_MAP(ReluGrad) = EMPTY_ATTR_MAP;
// 属性映射,空
OUTPUT_MAP(ReluGrad) = {{0, OUTPUT_DESC(backprops)}};
// 输出映射backprops的索引为0
REG_ADPT_DESC(ReluGrad, prim::kPrimReluGrad->name(), ADPT_DESC(ReluGrad))
// 注册ReluGrad操作的适配器描述prim::kPrimReluGrad->name()
// ReluGradV2
INPUT_MAP(ReluGradV2) = {{1, INPUT_DESC(gradients)}, {2, INPUT_DESC(mask)}};
// 输入映射有两个gradients的索引为1mask索引为2
ATTR_MAP(ReluGradV2) = EMPTY_ATTR_MAP;
// 属性映射,空
OUTPUT_MAP(ReluGradV2) = {{0, OUTPUT_DESC(backprops)}};
// 输出映射backprops的索引为0
REG_ADPT_DESC(ReluGradV2, kNameReluGradV2, ADPT_DESC(ReluGradV2))
// 注册ReluGradV2操作的适配器描述kNameReluGradV2
// Tanh
INPUT_MAP(Tanh) = {{1, INPUT_DESC(x)}};
// 输入映射x的索引为1
ATTR_MAP(Tanh) = EMPTY_ATTR_MAP;
// 属性映射,空
OUTPUT_MAP(Tanh) = {{0, OUTPUT_DESC(y)}};
// 输出映射y的索引为0
REG_ADPT_DESC(Tanh, prim::kPrimTanh->name(), ADPT_DESC(Tanh))
// 注册Tanh操作的适配器描述prim::kPrimTanh->name()
// TanhGrad
INPUT_MAP(TanhGrad) = {{1, INPUT_DESC(y)}, {2, INPUT_DESC(dy)}};
// 输入映射有两个y的索引为1dy索引为2
ATTR_MAP(TanhGrad) = EMPTY_ATTR_MAP;
// 属性映射,空
OUTPUT_MAP(TanhGrad) = {{0, OUTPUT_DESC(z)}};
// 输出映射z的索引为0
REG_ADPT_DESC(TanhGrad, prim::kPrimTanhGrad->name(), ADPT_DESC(TanhGrad))
// 注册NPUTanhGrad操作的适配器描述prim::kPrimTanhGrad->name()
// Mish
INPUT_MAP(Mish) = {{1, INPUT_DESC(x)}};
// 输入映射x的索引为1
ATTR_MAP(Mish) = EMPTY_ATTR_MAP;
// 属性映射,空
OUTPUT_MAP(Mish) = {{0, OUTPUT_DESC(y)}};
// 输出映射y的索引为0
REG_ADPT_DESC(Mish, kNameMish, ADPT_DESC(Mish))
// 注册Mish操作的适配器描述kNameMish
// GeLU
INPUT_MAP(Gelu) = {{1, INPUT_DESC(x)}};
// 输入映射x的索引为1
ATTR_MAP(Gelu) = EMPTY_ATTR_MAP;
// 属性映射,空
OUTPUT_MAP(Gelu) = {{0, OUTPUT_DESC(y)}};
// 输出映射y的索引为0
REG_ADPT_DESC(Gelu, prim::kPrimGeLU->name(), ADPT_DESC(Gelu))
// 注册Gelu操作的适配器描述prim::kPrimGeLU->name()
// GeLUGrad
INPUT_MAP(GeluGrad) = {{1, INPUT_DESC(dy)}, {2, INPUT_DESC(x)}, {3, INPUT_DESC(y)}};
// 输入映射有三个x的索引为1activations索引为2y索引为3
ATTR_MAP(GeluGrad) = EMPTY_ATTR_MAP;
// 属性映射,空
OUTPUT_MAP(GeluGrad) = {{0, OUTPUT_DESC(z)}};
// 输出映射z的索引为0
REG_ADPT_DESC(GeluGrad, prim::kPrimGeLUGrad->name(), ADPT_DESC(GeluGrad))
// 注册GeluGrad操作的适配器描述prim::kPrimGeLUGrad->name()
// FastGeLU
INPUT_MAP(FastGelu) = {{1, INPUT_DESC(x)}};
// 输入映射x的索引为1
ATTR_MAP(FastGelu) = EMPTY_ATTR_MAP;
// 属性映射,空
OUTPUT_MAP(FastGelu) = {{0, OUTPUT_DESC(y)}};
// 输出映射y的索引为0
REG_ADPT_DESC(FastGelu, prim::kPrimFastGeLU->name(), ADPT_DESC(FastGelu))
// 注册FastGelu操作的适配器描述 prim::kPrimFastGeLU->name()
// FastGeLUGrad
INPUT_MAP(FastGeluGrad) = {{1, INPUT_DESC(dy)}, {2, INPUT_DESC(x)}};
// 输入映射有两个dy的索引为1x索引为2
ATTR_MAP(FastGeluGrad) = EMPTY_ATTR_MAP;
// 属性映射,空
OUTPUT_MAP(FastGeluGrad) = {{0, OUTPUT_DESC(z)}};
// 输出映射z的索引为0
REG_ADPT_DESC(FastGeluGrad, prim::kPrimFastGeLUGrad->name(), ADPT_DESC(FastGeluGrad))
// 注册FastGeluGrad操作的适配器描述 prim::kPrimFastGeLUGrad->name()
// LeakyRelu
INPUT_MAP(LeakyRelu) = {{1, INPUT_DESC(x)}};
// 输入映射x的索引为1
ATTR_MAP(LeakyRelu) = {{"alpha", ATTR_DESC(negative_slope, AnyTraits<float>())}};
// 属性映射,属性"alpha"的类型为float
OUTPUT_MAP(LeakyRelu) = {{0, OUTPUT_DESC(y)}};
// 输出映射y的索引为0
REG_ADPT_DESC(LeakyRelu, prim::kPrimLeakyRelu->name(), ADPT_DESC(LeakyRelu))
// 注册LeakyRelu操作的适配器描述 prim::kPrimLeakyRelu->name()
} // namespace mindspore::transform