162 lines
7.7 KiB
C++
162 lines
7.7 KiB
C++
/**
|
||
* 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/reduce_ops_declare.h"
|
||
#include <vector>
|
||
|
||
namespace mindspore::transform {
|
||
// BNTrainingReduce
|
||
INPUT_MAP(BNTrainingReduce) = {{1, INPUT_DESC(x)}};
|
||
// 输入映射,x索引为1
|
||
ATTR_MAP(BNTrainingReduce) = EMPTY_ATTR_MAP;
|
||
// 属性映射,空
|
||
OUTPUT_MAP(BNTrainingReduce) = {{0, OUTPUT_DESC(sum)}, {1, OUTPUT_DESC(square_sum)}};
|
||
// 输出映射,sum索引为0,square_sum索引为1
|
||
REG_ADPT_DESC(BNTrainingReduce, kNameBNTrainingReduce, ADPT_DESC(BNTrainingReduce))
|
||
//注册BNTrainingReduce操作的适配器描述kNameBNTrainingReduce
|
||
|
||
// BNTrainingReduceGrad
|
||
INPUT_MAP(BNTrainingReduceGrad) = {{1, INPUT_DESC(grads)}, {2, INPUT_DESC(x)}, {3, INPUT_DESC(diff_scale)},
|
||
{4, INPUT_DESC(diff_offset)}, {5, INPUT_DESC(scale)}, {6, INPUT_DESC(batch_mean)},
|
||
{7, INPUT_DESC(batch_variance)}};
|
||
//输入映射,共七个,grad索引为1,x索引为2,diff_scale索引为3,diff_offset索引为4,scale索引为5,batch_mean索引为6,batch_variance索引为7
|
||
ATTR_MAP(BNTrainingReduceGrad) = {{"epsilon", ATTR_DESC(epsilon, AnyTraits<float>())}};
|
||
// 属性映射,列出了"epsilon"类型为float
|
||
OUTPUT_MAP(BNTrainingReduceGrad) = {{0, OUTPUT_DESC(y)}};
|
||
//输出映射,y索引为0
|
||
REG_ADPT_DESC(BNTrainingReduceGrad, kNameBNTrainingReduceGrad, ADPT_DESC(BNTrainingReduceGrad))
|
||
// 注册BNTrainingReduceGrad操作的适配器描述kNameBNTrainingReduceGrad
|
||
|
||
// BNTrainingUpdate
|
||
INPUT_MAP(BNTrainingUpdate) = {{1, INPUT_DESC(x)}, {2, INPUT_DESC(sum)}, {3, INPUT_DESC(square_sum)},
|
||
{4, INPUT_DESC(scale)}, {5, INPUT_DESC(offset)}, {6, INPUT_DESC(mean)},
|
||
{7, INPUT_DESC(variance)}};
|
||
// 输入映射,共七个,grad索引为1,x索引为2,diff_scale索引为3,diff_offset索引为4,scale索引为5,batch_mean索引为6,batch_variance索引为7
|
||
ATTR_MAP(BNTrainingUpdate) = {{"factor", ATTR_DESC(factor, AnyTraits<float>())},
|
||
{"epsilon", ATTR_DESC(epsilon, AnyTraits<float>())}};
|
||
// 属性映射,列出了"factor""epsilon"类型为float
|
||
OUTPUT_MAP(BNTrainingUpdate) = {{0, OUTPUT_DESC(y)},
|
||
{1, OUTPUT_DESC(mean)},
|
||
{2, OUTPUT_DESC(variance)},
|
||
{3, OUTPUT_DESC(batch_mean)},
|
||
{4, OUTPUT_DESC(batch_variance)}};
|
||
// 输出映射,共五个,y索引为0,mean索引为1,variance索引为2,batch_mean索引为3,batch_variance索引为4
|
||
REG_ADPT_DESC(BNTrainingUpdate, kNameBNTrainingUpdate, ADPT_DESC(BNTrainingUpdate))
|
||
// 注册BNTrainingUpdate操作的适配器描述kNameBNTrainingUpdate
|
||
|
||
// BNTrainingUpdateGrad
|
||
INPUT_MAP(BNTrainingUpdateGrad) = {
|
||
{1, INPUT_DESC(grads)}, {2, INPUT_DESC(x)}, {3, INPUT_DESC(batch_mean)}, {4, INPUT_DESC(batch_variance)}};
|
||
// 输入映射,共五个,grads索引为1,x索引为2,batch_mean索引为3,batch_variance索引为4
|
||
ATTR_MAP(BNTrainingUpdateGrad) = {{"epsilon", ATTR_DESC(epsilon, AnyTraits<float>())}};
|
||
// 属性映射,"epsilon"类型为float
|
||
OUTPUT_MAP(BNTrainingUpdateGrad) = {{0, OUTPUT_DESC(diff_scale)}, {1, OUTPUT_DESC(diff_offset)}};
|
||
// 输出映射,共两个,diff_scale索引为0,diff_offset索引为1
|
||
REG_ADPT_DESC(BNTrainingUpdateGrad, kNameBNTrainingUpdateGrad, ADPT_DESC(BNTrainingUpdateGrad))
|
||
// 注册BNTrainingUpdateGrad操作的适配器描述kNameBNTrainingUpdateGrad
|
||
|
||
// ReduceAnyD
|
||
INPUT_MAP(ReduceAnyD) = {{1, INPUT_DESC(x)}};
|
||
// 输入映射,x索引为1
|
||
INPUT_ATTR_MAP(ReduceAnyD) = {
|
||
{2, ATTR_DESC(axes, AnyTraits<std::vector<int64_t>>(), AnyTraits<std::vector<int64_t>>())}};
|
||
// 输入属性映射,axes索引为2,类型为int64_t
|
||
ATTR_MAP(ReduceAnyD) = {{"keep_dims", ATTR_DESC(keep_dims, AnyTraits<bool>())}};
|
||
// 属性映射,"keep_dims"类型为bool
|
||
OUTPUT_MAP(ReduceAnyD) = {{0, OUTPUT_DESC(y)}};
|
||
// 输出映射,y索引为0
|
||
REG_ADPT_DESC(ReduceAnyD, kNameReduceAnyD, ADPT_DESC(ReduceAnyD))
|
||
// 注册ReduceAnyD操作的适配器描述 kNameReduceAnyD
|
||
|
||
// ReduceSumD
|
||
INPUT_MAP(ReduceSumD) = {{1, INPUT_DESC(x)}};
|
||
//输入映射,x索引为1
|
||
INPUT_ATTR_MAP(ReduceSumD) = {
|
||
{2, ATTR_DESC(axes, AnyTraits<std::vector<int64_t>>(), AnyTraits<std::vector<int64_t>>())}};
|
||
// 输入属性映射,axes索引为2,类型为int64_t
|
||
ATTR_MAP(ReduceSumD) = {{"keep_dims", ATTR_DESC(keep_dims, AnyTraits<bool>())}};
|
||
// 属性映射,"keep_dims"类型为bool
|
||
OUTPUT_MAP(ReduceSumD) = {{0, OUTPUT_DESC(y)}};
|
||
// 输出映射,y索引为0
|
||
REG_ADPT_DESC(ReduceSumD, prim::kPrimReduceSum->name(), ADPT_DESC(ReduceSumD))
|
||
// 注册ReduceSumD操作的适配器描述 prim::kPrimReduceSum->name()
|
||
|
||
// ReduceProdD
|
||
INPUT_MAP(ReduceProdD) = {{1, INPUT_DESC(x)}};
|
||
// 输入映射,x索引为1
|
||
INPUT_ATTR_MAP(ReduceProdD) = {
|
||
{2, ATTR_DESC(axes, AnyTraits<std::vector<int64_t>>(), AnyTraits<std::vector<int64_t>>())}};
|
||
// 输入属性映射,axes索引为2,类型为int64_t
|
||
ATTR_MAP(ReduceProdD) = {{"keep_dims", ATTR_DESC(keep_dims, AnyTraits<bool>())}};
|
||
// 属性映射,"keep_dims"类型为bool
|
||
OUTPUT_MAP(ReduceProdD) = {{0, OUTPUT_DESC(y)}};
|
||
// 输出映射,y索引为0
|
||
REG_ADPT_DESC(ReduceProdD, kNameReduceProd, ADPT_DESC(ReduceProdD))
|
||
// 注册ReduceProdD操作的适配器描述kNameReduceProd
|
||
|
||
|
||
// ReduceAllD
|
||
INPUT_MAP(ReduceAllD) = {{1, INPUT_DESC(x)}};
|
||
// 输入映射,x索引为1
|
||
INPUT_ATTR_MAP(ReduceAllD) = {
|
||
{2, ATTR_DESC(axes, AnyTraits<std::vector<int64_t>>(), AnyTraits<std::vector<int64_t>>())}};
|
||
// 属性映射,axes索引为2,类型为int64_t
|
||
ATTR_MAP(ReduceAllD) = {{"keep_dims", ATTR_DESC(keep_dims, AnyTraits<bool>())}};
|
||
// 属性映射,"keep_dims"类型为bool
|
||
OUTPUT_MAP(ReduceAllD) = {{0, OUTPUT_DESC(y)}};
|
||
// 输出映射,y索引为0
|
||
REG_ADPT_DESC(ReduceAllD, prim::kPrimReduceAll->name(), ADPT_DESC(ReduceAllD))
|
||
// 注册ReduceAllD操作的适配器描述prim::kPrimReduceAll->name()
|
||
|
||
// ReduceMeanD
|
||
INPUT_MAP(ReduceMeanD) = {{1, INPUT_DESC(x)}};
|
||
// 输入映射,x索引为1
|
||
INPUT_ATTR_MAP(ReduceMeanD) = {
|
||
{2, ATTR_DESC(axes, AnyTraits<std::vector<int64_t>>(), AnyTraits<std::vector<int64_t>>())}};
|
||
// 输入属性映射,axes索引为2,类型为int64_t
|
||
ATTR_MAP(ReduceMeanD) = {{"keep_dims", ATTR_DESC(keep_dims, AnyTraits<bool>())}};
|
||
// 属性映射,"keep_dims"类型为bool
|
||
OUTPUT_MAP(ReduceMeanD) = {{0, OUTPUT_DESC(y)}};
|
||
REG_ADPT_DESC(ReduceMeanD, prim::kPrimReduceMean->name(), ADPT_DESC(ReduceMeanD))
|
||
// 注册ReduceMeanD操作的适配器描述prim::kPrimReduceAll->name()
|
||
//
|
||
// ReduceMinD
|
||
INPUT_MAP(ReduceMinD) = {{1, INPUT_DESC(x)}};
|
||
// 输入映射,x索引为1
|
||
INPUT_ATTR_MAP(ReduceMinD) = {
|
||
{2, ATTR_DESC(axes, AnyTraits<std::vector<int64_t>>(), AnyTraits<std::vector<int64_t>>())}};
|
||
// 输入属性映射,axes索引为2,类型为int64_t
|
||
ATTR_MAP(ReduceMinD) = {{"keep_dims", ATTR_DESC(keep_dims, AnyTraits<bool>())}};
|
||
// 属性映射,"keep_dims"类型为bool
|
||
OUTPUT_MAP(ReduceMinD) = {{0, OUTPUT_DESC(y)}};
|
||
// 输出映射,y索引为0
|
||
REG_ADPT_DESC(ReduceMinD, prim::kPrimReduceMin->name(), ADPT_DESC(ReduceMinD))
|
||
// 注册ReduceMinD操作的适配器描述prim::kPrimReduceAll->name()
|
||
|
||
// ReduceMaxD
|
||
INPUT_MAP(ReduceMaxD) = {{1, INPUT_DESC(x)}};
|
||
// 输入映射,x索引为1
|
||
INPUT_ATTR_MAP(ReduceMaxD) = {
|
||
{2, ATTR_DESC(axes, AnyTraits<std::vector<int64_t>>(), AnyTraits<std::vector<int64_t>>())}};
|
||
// 输入属性映射,axes索引为2,类型为int64_t
|
||
ATTR_MAP(ReduceMaxD) = {{"keep_dims", ATTR_DESC(keep_dims, AnyTraits<bool>())}};
|
||
// 属性映射,"keep_dims"类型为bool
|
||
OUTPUT_MAP(ReduceMaxD) = {{0, OUTPUT_DESC(y)}};
|
||
// 输出映射,y索引为0
|
||
REG_ADPT_DESC(ReduceMaxD, prim::kPrimReduceMax->name(), ADPT_DESC(ReduceMaxD))
|
||
// 注册ReduceMaxD操作的适配器描述prim::kPrimReduceAll->name()
|
||
} // namespace mindspore::transform
|