transform/array_ops_declare.cc

205 lines
9.2 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 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/array_ops_declare.h"
#include <vector>
#include <string>
namespace mindspore::transform {
// const
INPUT_MAP(Const) = EMPTY_INPUT_MAP;
//输入映射,设为空
ATTR_MAP(Const) = {{"value", ATTR_DESC(value, AnyTraits<AnyValue>())}};
//属性映射属性value类型为AnyValue()
OUTPUT_MAP(Const) = {{0, OUTPUT_DESC(y)}};
//输出映射y索引为0
// Constant
INPUT_MAP(Constant) = EMPTY_INPUT_MAP;
//输入映射,设为空
ATTR_MAP(Constant) = {{"value", ATTR_DESC(value, AnyTraits<AnyValue>())}};
//属性映射属性value类型为AnyValue()
OUTPUT_MAP(Constant) = {{0, OUTPUT_DESC(y)}};
//输出映射y索引为0
REG_ADPT_DESC(Constant, kNameConst, ADPT_DESC(Constant, Const))
//注册Constant操作的适配器描述KNameConst
// ScalarSummary
INPUT_MAP(Summary) = {{2, INPUT_DESC(x)}};
//输入映射x索引为2
ATTR_MAP(Summary) = EMPTY_ATTR_MAP
//属性映射,设为空
#ifndef ENABLE_SECURITY
//如果未定义ENABLE_SECURITY宏变量则注册适配器描述信息
//适配器描述用于将特定操作与指定的适配器关联将ScalarSummaryImageSummaryTensorSummaryHistogramSummary和Debug操作与Summary适配器描述关联
//操作的名称和prim空间下的kPrimScalarSummary、kPrimImageSummary、kPrimTensorSummary、kPrimHistogramSummary和kPrimDebug相匹配
REG_ADPT_DESC(ScalarSummary, prim::kPrimScalarSummary->name(), ADPT_DESC(Summary))
REG_ADPT_DESC(ImageSummary, prim::kPrimImageSummary->name(), ADPT_DESC(Summary))
REG_ADPT_DESC(TensorSummary, prim::kPrimTensorSummary->name(), ADPT_DESC(Summary))
REG_ADPT_DESC(HistogramSummary, prim::kPrimHistogramSummary->name(), ADPT_DESC(Summary))
#endif
REG_ADPT_DESC(Debug, prim::kPrimDebug->name(), ADPT_DESC(Summary))
//不论 ENABLE_SECURITY是否定义都将Debug操作与Summary适配器描述关联
// Data
INPUT_MAP(Data) = EMPTY_INPUT_MAP;
//输入映射,设为空
ATTR_MAP(Data) = EMPTY_ATTR_MAP;
//属性映射,设为空
REG_ADPT_DESC(Data, kNameParam, ADPT_DESC(Data))
//注册Data操作的适配器描述KNameParam
// Shape
INPUT_MAP(Shape) = {{1, INPUT_DESC(x)}};
//输入映射x索引为1
ATTR_MAP(Shape) = EMPTY_ATTR_MAP;
//属性映射,设为空
OUTPUT_MAP(Shape) = {{0, OUTPUT_DESC(y)}};
//输出映射y索引为0
REG_ADPT_DESC(Shape, kNameShape, ADPT_DESC(Shape))
//注册Shape操作的适配器描述KNameShape
// GetShape
INPUT_MAP(GetShape) = EMPTY_INPUT_MAP;
//输入映射,设为空
DYN_INPUT_MAP(GetShape) = {{1, DYN_INPUT_DESC(x)}};
//动态输入映射将索引为1的动态输入与名称为x的动态输入描述关联起来用于后续操作
ATTR_MAP(GetShape) = EMPTY_ATTR_MAP;
//属性映射,设为空
OUTPUT_MAP(GetShape) = {{0, OUTPUT_DESC(y)}};
//输出映射y索引为0
REG_ADPT_DESC(GetShape, kNameGetShape, ADPT_DESC(GetShape));
//注册GetShape操作的适配器描述KNameGetShape
// Reshape
INPUT_MAP(Reshape) = {{1, INPUT_DESC(x)}, {2, INPUT_DESC(shape)}};
//输入映射x索引为1sharp索引为2
ATTR_MAP(Reshape) = EMPTY_ATTR_MAP;
//属性映射,设为空
OUTPUT_MAP(Reshape) = {{0, OUTPUT_DESC(y)}};
//输出映射y索引为0
REG_ADPT_DESC(Reshape, kNameReshape, ADPT_DESC(Reshape))
//注册ReShape操作的适配器描述KNameReShape
REG_ADPT_DESC(FlattenGrad, kNameFlattenGrad, ADPT_DESC(Reshape))
//注册FlattenGrad操作的适配器描述kNameFlattenGrad
// TransShape
INPUT_MAP(TransShape) = {{1, INPUT_DESC(x)}};
//输入映射x索引为1
INPUT_ATTR_MAP(TransShape) = {{2, ATTR_DESC(outShape, AnyTraits<int64_t>(), AnyTraits<std::vector<int64_t>>())}};
ATTR_MAP(TransShape) = EMPTY_ATTR_MAP;
//属性映射,设为空
OUTPUT_MAP(TransShape) = {{0, OUTPUT_DESC(y)}};
//输出映射y索引为0
REG_ADPT_DESC(TransShape, kNameTransShape, ADPT_DESC(TransShape))
//注册TransShape操作的适配器描述kNameTransShape
// MirrorPad
INPUT_MAP(MirrorPad) = {{1, INPUT_DESC(x)}, {2, INPUT_DESC(paddings)}};
//输入映射x索引为1paddings索引为2
ATTR_MAP(MirrorPad) = {{"mode", ATTR_DESC(mode, AnyTraits<std::string>())}};
//属性映射属性mode类型为string
OUTPUT_MAP(MirrorPad) = {{0, OUTPUT_DESC(y)}};
//输出映射y索引为0
REG_ADPT_DESC(MirrorPad, kNameMirrorPad, ADPT_DESC(MirrorPad))
//注册MirrorPad操作的适配器描述kNameMirrorPad
// MirrorPadGrad
INPUT_MAP(MirrorPadGrad) = {{1, INPUT_DESC(x)}, {2, INPUT_DESC(paddings)}};
//输入映射x索引为1paddings索引为2
ATTR_MAP(MirrorPadGrad) = {{"mode", ATTR_DESC(mode, AnyTraits<std::string>())}};
//属性映射属性mode类型为string
OUTPUT_MAP(MirrorPadGrad) = {{0, OUTPUT_DESC(y)}};
//输出映射y索引为0
REG_ADPT_DESC(MirrorPadGrad, kNameMirrorPadGrad, ADPT_DESC(MirrorPadGrad))
//注册MirrorPadGrad操作的适配器描述kNameMirrorPadGrad
// ExpandDims
INPUT_MAP(ExpandDims) = {{1, INPUT_DESC(x)}, {2, INPUT_DESC(axis)}};
//输入映射x索引为1axis索引为2
ATTR_MAP(ExpandDims) = EMPTY_ATTR_MAP;
//属性映射,设为空
OUTPUT_MAP(ExpandDims) = {{0, OUTPUT_DESC(y)}};
//输出映射y索引为0
REG_ADPT_DESC(ExpandDims, kNameExpandDims, ADPT_DESC(ExpandDims))
//注册ExpandDims操作的适配器描述kNameExpandDims
// Squeeze
INPUT_MAP(Squeeze) = {{1, INPUT_DESC(x)}};
//输入映射x索引为1
ATTR_MAP(Squeeze) = {{"axis", ATTR_DESC(axis, AnyTraits<int64_t>(), AnyTraits<std::vector<int64_t>>())}};
//属性映射属性axis类型为int64_t
OUTPUT_MAP(Squeeze) = {{0, OUTPUT_DESC(y)}};
//输出映射y索引为0
REG_ADPT_DESC(Squeeze, prim::kPrimSqueeze->name(), ADPT_DESC(Squeeze))
//注册Squeeze操作的适配器描述kNameSqueeze返回的name变量
// ReverseSequence
INPUT_MAP(ReverseSequence) = {{1, INPUT_DESC(x)}, {2, INPUT_DESC(seq_lengths)}};
//输入映射x索引为1seq_lengths索引为2
ATTR_MAP(ReverseSequence) = {{"seq_dim", ATTR_DESC(seq_dim, AnyTraits<int64_t>())},
{"batch_dim", ATTR_DESC(batch_dim, AnyTraits<int64_t>())}};
//属性映射属性seq_dim类型为int64_t属性batch_dim类型为int64_t
OUTPUT_MAP(ReverseSequence) = {{0, OUTPUT_DESC(y)}};
//输出映射y索引为0
REG_ADPT_DESC(ReverseSequence, kNameReverseSequence, ADPT_DESC(ReverseSequence))
//注册ReverseSequence操作的适配器描述kNameReverseSequence
// EditDistance
INPUT_MAP(EditDistance) = {{1, INPUT_DESC(hypothesis_indices)}, {2, INPUT_DESC(hypothesis_values)},
{3, INPUT_DESC(hypothesis_shape)}, {4, INPUT_DESC(truth_indices)},
{5, INPUT_DESC(truth_values)}, {6, INPUT_DESC(truth_shape)}};
//输入映射hypothesis_indices索引为1hypothesis_values索引为2hypothesis_shape索引为3
// truth_indices索引为4truth_values索引为5,truth_shape索引为6
ATTR_MAP(EditDistance) = {{"normalize", ATTR_DESC(normalize, AnyTraits<bool>())}};
//属性映射属性normalize类型为int64_t
OUTPUT_MAP(EditDistance) = {{0, OUTPUT_DESC(output)}};
//输出映射y索引为0
REG_ADPT_DESC(EditDistance, kNameEditDistance, ADPT_DESC(EditDistance))
//注册EditDistance操作的适配器描述kNameEditDistance
// NonZeroWithValue
INPUT_MAP(NonZeroWithValue) = {{1, INPUT_DESC(x)}};
//输入映射x索引为1
ATTR_MAP(NonZeroWithValue) = {{"transpose", ATTR_DESC(transpose, AnyTraits<bool>())}};
//属性映射属性transpose类型为int64_t
OUTPUT_MAP(NonZeroWithValue) = {{0, OUTPUT_DESC(value)}, {1, OUTPUT_DESC(index)}, {2, OUTPUT_DESC(count)}};
//输出映射value索引为0index索引为1count索引为2
REG_ADPT_DESC(NonZeroWithValue, kNameNonZeroWithValue, ADPT_DESC(NonZeroWithValue))
//注册NonZeroWithValue操作的适配器描述kNameNonZeroWithValue
// NonZeroWithValueShape
INPUT_MAP(NonZeroWithValueShape) = {{1, INPUT_DESC(value)}, {2, INPUT_DESC(index)}, {3, INPUT_DESC(count)}};
//输入映射x索引为1index索引为2count索引为3
ATTR_MAP(NonZeroWithValueShape) = EMPTY_ATTR_MAP;
//属性映射,设为空
OUTPUT_MAP(NonZeroWithValueShape) = {{0, OUTPUT_DESC(out_value)}, {1, OUTPUT_DESC(out_index)}};
//输出映射out_value索引为0out_index索引为1out_count索引为2
REG_ADPT_DESC(NonZeroWithValueShape, kNameNonZeroWithValueShape, ADPT_DESC(NonZeroWithValueShape))
//注册NonZeroWithValueShape操作的适配器描述kNameNonZeroWithValueShape
// Unsqueeze
INPUT_MAP(Unsqueeze) = {{1, INPUT_DESC(x)}};
//输入映射x索引为1
ATTR_MAP(Unsqueeze) = {{"axis", ATTR_DESC(axes, AnyTraits<int64_t>(), AnyTraits<std::vector<int64_t>>())}};
//属性映射属性axis类型为int64_t
OUTPUT_MAP(Unsqueeze) = {{0, OUTPUT_DESC(y)}};
//输出映射y索引为0
REG_ADPT_DESC(Unsqueeze, kNameUnsqueeze, ADPT_DESC(Unsqueeze))
//注册Unsqueeze操作的适配器描述kNameUnsqueeze
} // namespace mindspore::transform