diff --git a/src/operators/kernel/central-arm-func/conv_add_arm_func.h b/src/operators/kernel/central-arm-func/conv_add_arm_func.h index d71bc235977236fbd0dd332df556ea4bd41eacf4..143ce56c86b9f4abe2e26508ab802f224eaa1725 100644 --- a/src/operators/kernel/central-arm-func/conv_add_arm_func.h +++ b/src/operators/kernel/central-arm-func/conv_add_arm_func.h @@ -118,13 +118,15 @@ void ConvAddCompute(const FusionConvAddParam ¶m) { if (param.Groups() == param.Input()->dims()[1] && param.Input()->dims()[1] == param.Output()->dims()[1] && param.Filter()->dims()[2] == param.Filter()->dims()[3] && - param.Filter()->dims()[2] == 3 && param.Strides()[0] == 1) { + param.Filter()->dims()[2] == 3 && param.Strides()[0] == 1 && + param.Input()->dims()[2] == param.Input()->dims()[2]) { math::DepthwiseConv3x3s1p1(param.Input(), param.Filter(), param.Output(), param.Bias(), true); } else if (param.Groups() == param.Input()->dims()[1] && param.Input()->dims()[1] == param.Output()->dims()[1] && param.Filter()->dims()[2] == param.Filter()->dims()[3] && - param.Filter()->dims()[2] == 3 && param.Strides()[0] == 2) { + param.Filter()->dims()[2] == 3 && param.Strides()[0] == 2 && + param.Input()->dims()[2] == param.Input()->dims()[2]) { // math::DepthwiseConv3x3(param.Input(), param.Strides(), // param.Paddings(), // param.Filter(), param.Bias(), diff --git a/src/operators/kernel/central-arm-func/conv_add_bn_relu_arm_func.h b/src/operators/kernel/central-arm-func/conv_add_bn_relu_arm_func.h index a7d14fbad1e4b72a8571d13898e55a6cad8bf9a8..2d7825ae14bc03d5f58cf45be0d28e52f45e139f 100644 --- a/src/operators/kernel/central-arm-func/conv_add_bn_relu_arm_func.h +++ b/src/operators/kernel/central-arm-func/conv_add_bn_relu_arm_func.h @@ -118,14 +118,16 @@ void ConvAddBNReluCompute(const FusionConvAddBNReluParam ¶m) { if (param.Groups() == param.Input()->dims()[1] && param.Input()->dims()[1] == param.Output()->dims()[1] && param.Filter()->dims()[2] == param.Filter()->dims()[3] && - param.Filter()->dims()[2] == 3 && param.Strides()[0] == 1) { + param.Filter()->dims()[2] == 3 && param.Strides()[0] == 1 && + param.Input()->dims()[2] == param.Input()->dims()[2]) { math::DepthwiseConvAddBNRelu3x3s1p1(param.Input(), param.Filter(), param.Output(), param.NewScale(), param.NewBias(), true); } else if (param.Groups() == param.Input()->dims()[1] && param.Input()->dims()[1] == param.Output()->dims()[1] && param.Filter()->dims()[2] == param.Filter()->dims()[3] && - param.Filter()->dims()[2] == 3 && param.Strides()[0] == 2) { + param.Filter()->dims()[2] == 3 && param.Strides()[0] == 2 && + param.Input()->dims()[2] == param.Input()->dims()[2]) { // math::DepthwiseConvAddBNRelu3x3s2p1(param.Input(), param.Filter(), // param.Output(), param.NewScale(), // param.NewBias(), 1); diff --git a/src/operators/kernel/central-arm-func/conv_arm_func.h b/src/operators/kernel/central-arm-func/conv_arm_func.h index e7a8c7f52db327f3ff5871566c3557c484ba4d13..14b5992e392247135ce229f64279b3997ee078b2 100644 --- a/src/operators/kernel/central-arm-func/conv_arm_func.h +++ b/src/operators/kernel/central-arm-func/conv_arm_func.h @@ -124,13 +124,15 @@ void ConvCompute(const ConvParam ¶m) { if (param.Groups() == param.Input()->dims()[1] && param.Input()->dims()[1] == param.Output()->dims()[1] && param.Filter()->dims()[2] == param.Filter()->dims()[3] && - param.Filter()->dims()[2] == 3 && param.Strides()[0] == 1) { + param.Filter()->dims()[2] == 3 && param.Strides()[0] == 1 && + param.Input()->dims()[2] == param.Input()->dims()[2]) { math::DepthwiseConv3x3s1p1(param.Input(), param.Filter(), param.Output(), nullptr, false); } else if (param.Groups() == param.Input()->dims()[1] && param.Input()->dims()[1] == param.Output()->dims()[1] && param.Filter()->dims()[2] == param.Filter()->dims()[3] && - param.Filter()->dims()[2] == 3) { + param.Filter()->dims()[2] == 3 && + param.Input()->dims()[2] == param.Input()->dims()[2]) { math::DepthwiseConv3x3(param.Input(), param.Strides(), param.Paddings(), param.Filter(), nullptr, param.Output(), false); } else { diff --git a/src/operators/kernel/central-arm-func/conv_bn_add_relu_arm_func.h b/src/operators/kernel/central-arm-func/conv_bn_add_relu_arm_func.h index 7c31eed19693d20084e25daa485a0553d5d795f2..67015e14d1662d747d82ea742d847c44c56063b2 100644 --- a/src/operators/kernel/central-arm-func/conv_bn_add_relu_arm_func.h +++ b/src/operators/kernel/central-arm-func/conv_bn_add_relu_arm_func.h @@ -122,14 +122,16 @@ void ConvBNAddReluCompute(const FusionConvBNAddReluParam ¶m) { if (param.Groups() == param.Input()->dims()[1] && param.Input()->dims()[1] == param.Output()->dims()[1] && param.Filter()->dims()[2] == param.Filter()->dims()[3] && - param.Filter()->dims()[2] == 3 && param.Strides()[0] == 1) { + param.Filter()->dims()[2] == 3 && param.Strides()[0] == 1 && + param.Input()->dims()[2] == param.Input()->dims()[2]) { math::DepthwiseConvAddBNRelu3x3s1p1(param.Input(), param.Filter(), param.Output(), param.NewScale(), param.NewBias(), true); } else if (param.Groups() == param.Input()->dims()[1] && param.Input()->dims()[1] == param.Output()->dims()[1] && param.Filter()->dims()[2] == param.Filter()->dims()[3] && - param.Filter()->dims()[2] == 3 && param.Strides()[0] == 2) { + param.Filter()->dims()[2] == 3 && param.Strides()[0] == 2 && + param.Input()->dims()[2] == param.Input()->dims()[2]) { // math::DepthwiseConvAddBNRelu3x3s2p1(param.Input(), param.Filter(), // param.Output(), param.NewScale(), // param.NewBias(), 1); diff --git a/src/operators/kernel/central-arm-func/conv_bn_relu_arm_func.h b/src/operators/kernel/central-arm-func/conv_bn_relu_arm_func.h index c6300f96e1b999c45538417c7b513068697ad4dd..426e2840b44030f67edca0a8e39cbcfbe7d958c7 100644 --- a/src/operators/kernel/central-arm-func/conv_bn_relu_arm_func.h +++ b/src/operators/kernel/central-arm-func/conv_bn_relu_arm_func.h @@ -117,14 +117,16 @@ void ConvBNReluCompute(const FusionConvBNReluParam ¶m) { if (param.Groups() == param.Input()->dims()[1] && param.Input()->dims()[1] == param.Output()->dims()[1] && param.Filter()->dims()[2] == param.Filter()->dims()[3] && - param.Filter()->dims()[2] == 3 && param.Strides()[0] == 1) { + param.Filter()->dims()[2] == 3 && param.Strides()[0] == 1 && + param.Input()->dims()[2] == param.Input()->dims()[2]) { math::DepthwiseConvAddBNRelu3x3s1p1(param.Input(), param.Filter(), param.Output(), param.NewScale(), param.NewBias(), true); } else if (param.Groups() == param.Input()->dims()[1] && param.Input()->dims()[1] == param.Output()->dims()[1] && param.Filter()->dims()[2] == param.Filter()->dims()[3] && - param.Filter()->dims()[2] == 3 && param.Strides()[0] == 2) { + param.Filter()->dims()[2] == 3 && param.Strides()[0] == 2 && + param.Input()->dims()[2] == param.Input()->dims()[2]) { // math::DepthwiseConvAddBNRelu3x3s2p1(param.Input(), param.Filter(), // param.Output(), param.NewScale(), // param.NewBias(), 1); diff --git a/src/operators/kernel/central-arm-func/depthwise_conv_arm_func.h b/src/operators/kernel/central-arm-func/depthwise_conv_arm_func.h index 73170bdab922a46831334307aebc8af210ddfb73..c8e969b854710f3b01eec6ebb4c38dd08d25fade 100644 --- a/src/operators/kernel/central-arm-func/depthwise_conv_arm_func.h +++ b/src/operators/kernel/central-arm-func/depthwise_conv_arm_func.h @@ -30,13 +30,15 @@ void DepthwiseConvCompute(const ConvParam ¶m) { Bias.mutable_data({param.Groups()}); if (param.Groups() == param.Input()->dims()[1] && param.Filter()->dims()[2] == param.Filter()->dims()[3] && - param.Filter()->dims()[2] == 3 && param.Strides()[0] == 1) { + param.Filter()->dims()[2] == 3 && param.Strides()[0] == 1 && + param.Input()->dims()[2] == param.Input()->dims()[3]) { math::DepthwiseConv3x3s1p1(param.Input(), param.Filter(), param.Output(), &Bias, false); } else if (param.Groups() == param.Input()->dims()[1] && param.Input()->dims()[1] == param.Output()->dims()[1] && param.Filter()->dims()[2] == param.Filter()->dims()[3] && - param.Filter()->dims()[2] == 3 && param.Strides()[0] == 2) { + param.Filter()->dims()[2] == 3 && param.Strides()[0] == 2 && + param.Input()->dims()[2] == param.Input()->dims()[3]) { // math::DepthwiseConv3x3(param.Input(), param.Strides(), // param.Paddings(), // param.Filter(), &Bias, param.Output(), false); diff --git a/src/operators/kernel/central-arm-func/dwconv_bn_relu_arm_func.h b/src/operators/kernel/central-arm-func/dwconv_bn_relu_arm_func.h index b60bf9b4d6df9d85cc2fbe378a3904c2d13e5e60..797848365ef9b41f0ec96e0bed9551e49c03da6a 100644 --- a/src/operators/kernel/central-arm-func/dwconv_bn_relu_arm_func.h +++ b/src/operators/kernel/central-arm-func/dwconv_bn_relu_arm_func.h @@ -115,14 +115,16 @@ void DWConvBNReluCompute(const FusionDWConvBNReluParam ¶m) { if (param.Groups() == param.Input()->dims()[1] && param.Input()->dims()[1] == param.Output()->dims()[1] && param.Filter()->dims()[2] == param.Filter()->dims()[3] && - param.Filter()->dims()[2] == 3 && param.Strides()[0] == 1) { + param.Filter()->dims()[2] == 3 && param.Strides()[0] == 1 && + param.Input()->dims()[2] == param.Input()->dims()[2]) { math::DepthwiseConvAddBNRelu3x3s1p1(param.Input(), param.Filter(), param.Output(), param.NewScale(), param.NewBias(), true); } else if (param.Groups() == param.Input()->dims()[1] && param.Input()->dims()[1] == param.Output()->dims()[1] && param.Filter()->dims()[2] == param.Filter()->dims()[3] && - param.Filter()->dims()[2] == 3 && param.Strides()[0] == 2) { + param.Filter()->dims()[2] == 3 && param.Strides()[0] == 2 && + param.Input()->dims()[2] == param.Input()->dims()[2]) { // math::DepthwiseConvAddBNRelu3x3s2p1(param.Input(), param.Filter(), // param.Output(), param.NewScale(), // param.NewBias(), 1);