!14350 [MS_LITE] fix issue to r1.2

From: @YeFeng_24
Reviewed-by: @hangangqiang,@zhanghaibo5
Signed-off-by: @hangangqiang
This commit is contained in:
mindspore-ci-bot 2021-03-30 11:12:34 +08:00 committed by Gitee
commit 5f01223ca4
6 changed files with 24 additions and 34 deletions

View File

@ -145,6 +145,14 @@ int ElementLogicalOr(const float *in0, const float *in1, float *out, int size) {
return NNACL_OK;
}
int ElementLogicalOrBool(const bool *in0, const bool *in1, bool *out, int size) {
int index = 0;
for (; index < size; index++) {
out[index] = (in0[index]) | (in1[index]);
}
return NNACL_OK;
}
int ElementMaximum(const float *in0, const float *in1, float *out, int size) {
int index = 0;
#ifdef ENABLE_NEON

View File

@ -42,6 +42,7 @@ int ElementLogicalAndBool(const bool *in0, const bool *in1, bool *out, int size)
/* logical or */
int ElementLogicalOr(const float *in0, const float *in1, float *out, int size);
int ElementLogicalOrBool(const bool *in0, const bool *in1, bool *out, int size);
/* max min */
int ElementMaximum(const float *in0, const float *in1, float *out, int size);

View File

@ -49,6 +49,9 @@ int TransposeInferShape(const TensorC *const *inputs, size_t inputs_size, Tensor
if (perm_tensor->shape_size_ == 0) {
return NNACL_INFER_INVALID;
}
if (perms_num != 0 && perm_data == NULL) {
return NNACL_INFER_INVALID;
}
int perm[MAX_SHAPE_SIZE];
size_t perm_size = 0;
for (size_t i = 0; i < perms_num; i++) {

View File

@ -213,8 +213,8 @@ void ArithmeticCPUKernel::InitRunFunction(int primitive_type) {
ElementOptDivInt},
{PrimitiveType_LogicalAnd, schema::ActivationType_NO_ACTIVATION, ElementLogicalAnd, ElementLogicalAndInt,
ElementLogicalAndBool, nullptr, nullptr},
{PrimitiveType_LogicalOr, schema::ActivationType_NO_ACTIVATION, ElementLogicalOr, nullptr, nullptr, nullptr,
nullptr},
{PrimitiveType_LogicalOr, schema::ActivationType_NO_ACTIVATION, ElementLogicalOr, nullptr, ElementLogicalOrBool,
nullptr, nullptr},
{PrimitiveType_Maximum, schema::ActivationType_NO_ACTIVATION, ElementMaximum, ElementMaximumInt, nullptr, nullptr,
nullptr},
{PrimitiveType_Minimum, schema::ActivationType_NO_ACTIVATION, ElementMinimum, ElementMinimumInt, nullptr, nullptr,
@ -435,6 +435,7 @@ REG_KERNEL(kCPU, kNumberTypeFloat32, PrimitiveType_LogicalAnd, LiteKernelCreator
REG_KERNEL(kCPU, kNumberTypeBool, PrimitiveType_LogicalAnd, LiteKernelCreator<ArithmeticCPUKernel>)
REG_KERNEL(kCPU, kNumberTypeInt32, PrimitiveType_LogicalAnd, LiteKernelCreator<ArithmeticCPUKernel>)
REG_KERNEL(kCPU, kNumberTypeFloat32, PrimitiveType_LogicalOr, LiteKernelCreator<ArithmeticCPUKernel>)
REG_KERNEL(kCPU, kNumberTypeBool, PrimitiveType_LogicalOr, LiteKernelCreator<ArithmeticCPUKernel>)
REG_KERNEL(kCPU, kNumberTypeFloat32, PrimitiveType_Maximum, LiteKernelCreator<ArithmeticCPUKernel>)
REG_KERNEL(kCPU, kNumberTypeFloat32, PrimitiveType_Minimum, LiteKernelCreator<ArithmeticCPUKernel>)
REG_KERNEL(kCPU, kNumberTypeInt32, PrimitiveType_Maximum, LiteKernelCreator<ArithmeticCPUKernel>)

View File

@ -41,6 +41,14 @@ ops::PrimitiveC *TFActivationParser::Parse(const tensorflow::NodeDef &tf_op,
prim->set_activation_type(mindspore::ActivationType::SELU);
} else if (tf_op.op() == "Softplus") {
prim->set_activation_type(mindspore::ActivationType::SOFTPLUS);
} else if (tf_op.op() == "LeakyRelu") {
prim->set_activation_type(mindspore::ActivationType::LEAKY_RELU);
tensorflow::AttrValue attr_value;
if (!TensorFlowUtils::FindAttrValue(tf_op, "alpha", &attr_value)) {
MS_LOG(ERROR) << "The attribute alpha should be specified.";
return nullptr;
}
prim->set_alpha(attr_value.f());
} else {
MS_LOG(ERROR) << "unsupported activation type:" << tf_op.op();
return nullptr;
@ -55,33 +63,12 @@ ops::PrimitiveC *TFActivationParser::Parse(const tensorflow::NodeDef &tf_op,
return prim.release();
}
ops::PrimitiveC *TFLeakyReluParser::Parse(const tensorflow::NodeDef &tf_op,
const std::map<string, const tensorflow::NodeDef *> &tf_node_map,
std::vector<std::string> *inputs, int *output_size) {
auto prim = std::make_unique<ops::LeakyRelu>();
tensorflow::AttrValue attr_value;
if (!TensorFlowUtils::FindAttrValue(tf_op, "alpha", &attr_value)) {
MS_LOG(ERROR) << "The attribute alpha should be specified.";
return nullptr;
}
prim->set_negative_slope(attr_value.f());
*output_size = 1;
if (AddOpInput(tf_op, 0, inputs) != RET_OK) {
MS_LOG(ERROR) << "add op input failed";
return nullptr;
}
return prim.release();
}
TFNodeRegistrar g_tfReluParser("Relu", new TFActivationParser());
TFNodeRegistrar g_tfRelu6Parser("Relu6", new TFActivationParser());
TFNodeRegistrar g_tfSigmoidParser("Sigmoid", new TFActivationParser());
TFNodeRegistrar g_tfTanhParser("Tanh", new TFActivationParser());
TFNodeRegistrar g_tfSeLUParser("Selu", new TFActivationParser());
TFNodeRegistrar g_tfLeakyReluParser("LeakyRelu", new TFLeakyReluParser());
TFNodeRegistrar g_tfLeakyReluParser("LeakyRelu", new TFActivationParser());
TFNodeRegistrar g_tfSoftplusParser("Softplus", new TFActivationParser());
} // namespace lite
} // namespace mindspore

View File

@ -33,16 +33,6 @@ class TFActivationParser : public TFNodeParser {
const std::map<string, const tensorflow::NodeDef *> &tf_node_map,
std::vector<std::string> *inputs, int *output_size) override;
};
class TFLeakyReluParser : public TFNodeParser {
public:
TFLeakyReluParser() = default;
~TFLeakyReluParser() override = default;
ops::PrimitiveC *Parse(const tensorflow::NodeDef &tf_op,
const std::map<string, const tensorflow::NodeDef *> &tf_node_map,
std::vector<std::string> *inputs, int *output_size) override;
};
} // namespace lite
} // namespace mindspore