transform/reduce_ops_declare.cc

162 lines
7.7 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/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索引为0square_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索引为1x索引为2diff_scale索引为3diff_offset索引为4scale索引为5batch_mean索引为6batch_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索引为1x索引为2diff_scale索引为3diff_offset索引为4scale索引为5batch_mean索引为6batch_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索引为0mean索引为1variance索引为2batch_mean索引为3batch_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索引为1x索引为2batch_mean索引为3batch_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索引为0diff_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