205 lines
9.2 KiB
C++
205 lines
9.2 KiB
C++
/**
|
||
* 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索引为1,sharp索引为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索引为1,paddings索引为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索引为1,paddings索引为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索引为1,axis索引为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索引为1,seq_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索引为1,hypothesis_values索引为2,hypothesis_shape索引为3,
|
||
// truth_indices索引为4,truth_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索引为0,index索引为1,count索引为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索引为1,index索引为2,count索引为3
|
||
ATTR_MAP(NonZeroWithValueShape) = EMPTY_ATTR_MAP;
|
||
//属性映射,设为空
|
||
OUTPUT_MAP(NonZeroWithValueShape) = {{0, OUTPUT_DESC(out_value)}, {1, OUTPUT_DESC(out_index)}};
|
||
//输出映射,out_value索引为0,out_index索引为1,out_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
|