Skip to content

Commit a6fb066

Browse files
committed
Cherry Pick : 16837 Support ShuffleNet and MobileNet-v2
Support ShuffleNet and MobileNet-v2, test=release/1.4
1 parent 9f1927b commit a6fb066

27 files changed

+127
-491
lines changed

paddle/fluid/inference/anakin/convert/activation.cc

Lines changed: 13 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -43,47 +43,22 @@ void ActivationOpConverter<TargetT, PrecisionT>::operator()(
4343
auto output_name = op_desc.Output("Out").front();
4444
this->engine_->AddOp(op_name, "Activation", {input_name}, {output_name});
4545
this->engine_->AddOpAttr(op_name, "type", anakin_op_type_);
46+
47+
if (op_type_ == "swish") {
48+
float beta = boost::get<float>(op_desc.GetAttr("beta"));
49+
this->engine_->AddOpAttr(op_name, "clip_relu_num", beta);
50+
}
51+
if (op_type_ == "relu6") {
52+
float threshold = boost::get<float>(op_desc.GetAttr("threshold"));
53+
this->engine_->AddOpAttr(op_name, "clip_relu_num", threshold);
54+
}
4655
}
4756

4857
} // namespace anakin
4958
} // namespace inference
5059
} // namespace paddle
5160

52-
#ifdef PADDLE_WITH_CUDA
53-
using sigmoid_nv_fp32 =
54-
::paddle::inference::anakin::SigmoidOpConverter<::anakin::saber::NV,
55-
::anakin::Precision::FP32>;
56-
using sigmoid_nv_int8 =
57-
::paddle::inference::anakin::SigmoidOpConverter<::anakin::saber::NV,
58-
::anakin::Precision::INT8>;
59-
using tanh_nv_fp32 =
60-
::paddle::inference::anakin::TanhOpConverter<::anakin::saber::NV,
61-
::anakin::Precision::FP32>;
62-
using tanh_nv_int8 =
63-
::paddle::inference::anakin::TanhOpConverter<::anakin::saber::NV,
64-
::anakin::Precision::INT8>;
65-
66-
REGISTER_CUDA_ANAKIN_OP_CONVERTER(sigmoid, sigmoid_nv_fp32);
67-
REGISTER_CUDA_INT8_ANAKIN_OP_CONVERTER(sigmoid, sigmoid_nv_int8);
68-
REGISTER_CUDA_ANAKIN_OP_CONVERTER(tanh, tanh_nv_fp32);
69-
REGISTER_CUDA_INT8_ANAKIN_OP_CONVERTER(tanh, tanh_nv_int8);
70-
#endif
71-
72-
using sigmoid_cpu_fp32 =
73-
::paddle::inference::anakin::SigmoidOpConverter<::anakin::saber::X86,
74-
::anakin::Precision::FP32>;
75-
using sigmoid_cpu_int8 =
76-
::paddle::inference::anakin::SigmoidOpConverter<::anakin::saber::X86,
77-
::anakin::Precision::INT8>;
78-
using tanh_cpu_fp32 =
79-
::paddle::inference::anakin::TanhOpConverter<::anakin::saber::X86,
80-
::anakin::Precision::FP32>;
81-
using tanh_cpu_int8 =
82-
::paddle::inference::anakin::TanhOpConverter<::anakin::saber::X86,
83-
::anakin::Precision::INT8>;
84-
85-
REGISTER_CPU_ANAKIN_OP_CONVERTER(sigmoid, sigmoid_cpu_fp32);
86-
REGISTER_CPU_INT8_ANAKIN_OP_CONVERTER(sigmoid, sigmoid_cpu_int8);
87-
88-
REGISTER_CPU_ANAKIN_OP_CONVERTER(tanh, tanh_cpu_fp32);
89-
REGISTER_CPU_INT8_ANAKIN_OP_CONVERTER(tanh, tanh_cpu_int8);
61+
REGISTER_ANAKIN_OP_CONVERTER(sigmoid, SigmoidOpConverter);
62+
REGISTER_ANAKIN_OP_CONVERTER(tanh, TanhOpConverter);
63+
REGISTER_ANAKIN_OP_CONVERTER(swish, SwishOpConverter);
64+
REGISTER_ANAKIN_OP_CONVERTER(relu6, Relu6OpConverter);

paddle/fluid/inference/anakin/convert/activation.h

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@ class ActivationOpConverter : public AnakinOpConverter<TargetT, PrecisionT> {
3737
std::string op_type_;
3838
std::string anakin_op_type_;
3939
std::map<std::string, std::string> anakin_op_types_{{"tanh", "TanH"},
40-
{"sigmoid", "Sigmoid"}};
40+
{"sigmoid", "Sigmoid"},
41+
{"relu6", "ClippedRelu"},
42+
{"swish", "Swish"}};
4143
};
4244

4345
template <typename TargetT, ::anakin::Precision PrecisionT>
@@ -52,6 +54,19 @@ class SigmoidOpConverter : public ActivationOpConverter<TargetT, PrecisionT> {
5254
SigmoidOpConverter()
5355
: ActivationOpConverter<TargetT, PrecisionT>("sigmoid") {}
5456
};
57+
58+
template <typename TargetT, ::anakin::Precision PrecisionT>
59+
class Relu6OpConverter : public ActivationOpConverter<TargetT, PrecisionT> {
60+
public:
61+
Relu6OpConverter() : ActivationOpConverter<TargetT, PrecisionT>("relu6") {}
62+
};
63+
64+
template <typename TargetT, ::anakin::Precision PrecisionT>
65+
class SwishOpConverter : public ActivationOpConverter<TargetT, PrecisionT> {
66+
public:
67+
SwishOpConverter() : ActivationOpConverter<TargetT, PrecisionT>("swish") {}
68+
};
69+
5570
} // namespace anakin
5671
} // namespace inference
5772
} // namespace paddle

paddle/fluid/inference/anakin/convert/affine_channel.cc

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -52,22 +52,4 @@ void AffineChannelOpConverter<TargetT, PrecisionT>::operator()(
5252
} // namespace inference
5353
} // namespace paddle
5454

55-
#ifdef PADDLE_WITH_CUDA
56-
using affine_channel_nv_fp32 =
57-
::paddle::inference::anakin::AffineChannelOpConverter<
58-
::anakin::saber::NV, ::anakin::Precision::FP32>;
59-
using affine_channel_nv_int8 =
60-
::paddle::inference::anakin::AffineChannelOpConverter<
61-
::anakin::saber::NV, ::anakin::Precision::INT8>;
62-
REGISTER_CUDA_ANAKIN_OP_CONVERTER(affine_channel, affine_channel_nv_fp32);
63-
REGISTER_CUDA_INT8_ANAKIN_OP_CONVERTER(affine_channel, affine_channel_nv_int8);
64-
#endif
65-
66-
using affine_channel_cpu_fp32 =
67-
::paddle::inference::anakin::AffineChannelOpConverter<
68-
::anakin::saber::X86, ::anakin::Precision::FP32>;
69-
using affine_channel_cpu_int8 =
70-
::paddle::inference::anakin::AffineChannelOpConverter<
71-
::anakin::saber::X86, ::anakin::Precision::INT8>;
72-
REGISTER_CPU_ANAKIN_OP_CONVERTER(affine_channel, affine_channel_cpu_fp32);
73-
REGISTER_CPU_INT8_ANAKIN_OP_CONVERTER(affine_channel, affine_channel_cpu_int8);
55+
REGISTER_ANAKIN_OP_CONVERTER(affine_channel, AffineChannelOpConverter);

paddle/fluid/inference/anakin/convert/batch_norm.cc

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -82,18 +82,4 @@ void BatchNormOpConverter<TargetT, PrecisionT>::operator()(
8282
} // namespace inference
8383
} // namespace paddle
8484

85-
#ifdef PADDLE_WITH_CUDA
86-
using bn_nv_fp32 = ::paddle::inference::anakin::BatchNormOpConverter<
87-
::anakin::saber::NV, ::anakin::Precision::FP32>;
88-
using bn_nv_int8 = ::paddle::inference::anakin::BatchNormOpConverter<
89-
::anakin::saber::NV, ::anakin::Precision::INT8>;
90-
REGISTER_CUDA_ANAKIN_OP_CONVERTER(batch_norm, bn_nv_fp32);
91-
REGISTER_CUDA_INT8_ANAKIN_OP_CONVERTER(batch_norm, bn_nv_int8);
92-
#endif
93-
94-
using bn_cpu_fp32 = ::paddle::inference::anakin::BatchNormOpConverter<
95-
::anakin::saber::X86, ::anakin::Precision::FP32>;
96-
using bn_cpu_int8 = ::paddle::inference::anakin::BatchNormOpConverter<
97-
::anakin::saber::X86, ::anakin::Precision::INT8>;
98-
REGISTER_CPU_ANAKIN_OP_CONVERTER(batch_norm, bn_cpu_fp32);
99-
REGISTER_CPU_INT8_ANAKIN_OP_CONVERTER(batch_norm, bn_cpu_int8);
85+
REGISTER_ANAKIN_OP_CONVERTER(batch_norm, BatchNormOpConverter);

paddle/fluid/inference/anakin/convert/concat.cc

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -38,22 +38,4 @@ void ConcatOpConverter<TargetT, PrecisionT>::operator()(
3838
} // namespace inference
3939
} // namespace paddle
4040

41-
#ifdef PADDLE_WITH_CUDA
42-
using concat_nv_fp32 =
43-
::paddle::inference::anakin::ConcatOpConverter<::anakin::saber::NV,
44-
::anakin::Precision::FP32>;
45-
using concat_nv_int8 =
46-
::paddle::inference::anakin::ConcatOpConverter<::anakin::saber::NV,
47-
::anakin::Precision::INT8>;
48-
REGISTER_CUDA_ANAKIN_OP_CONVERTER(concat, concat_nv_fp32);
49-
REGISTER_CUDA_INT8_ANAKIN_OP_CONVERTER(concat, concat_nv_int8);
50-
51-
#endif
52-
using concat_cpu_fp32 =
53-
::paddle::inference::anakin::ConcatOpConverter<::anakin::saber::X86,
54-
::anakin::Precision::FP32>;
55-
using concat_cpu_int8 =
56-
::paddle::inference::anakin::ConcatOpConverter<::anakin::saber::X86,
57-
::anakin::Precision::INT8>;
58-
REGISTER_CPU_ANAKIN_OP_CONVERTER(concat, concat_cpu_fp32);
59-
REGISTER_CPU_INT8_ANAKIN_OP_CONVERTER(concat, concat_cpu_int8);
41+
REGISTER_ANAKIN_OP_CONVERTER(concat, ConcatOpConverter);

paddle/fluid/inference/anakin/convert/conv2d.cc

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -105,22 +105,4 @@ void Conv2dOpConverter<TargetT, PrecisionT>::operator()(
105105
} // namespace inference
106106
} // namespace paddle
107107

108-
#ifdef PADDLE_WITH_CUDA
109-
using conv2d_nv_fp32 =
110-
::paddle::inference::anakin::Conv2dOpConverter<::anakin::saber::NV,
111-
::anakin::Precision::FP32>;
112-
using conv2d_nv_int8 =
113-
::paddle::inference::anakin::Conv2dOpConverter<::anakin::saber::NV,
114-
::anakin::Precision::INT8>;
115-
REGISTER_CUDA_ANAKIN_OP_CONVERTER(conv2d, conv2d_nv_fp32);
116-
REGISTER_CUDA_INT8_ANAKIN_OP_CONVERTER(conv2d, conv2d_nv_int8);
117-
#endif
118-
119-
using conv2d_cpu_fp32 =
120-
::paddle::inference::anakin::Conv2dOpConverter<::anakin::saber::X86,
121-
::anakin::Precision::FP32>;
122-
using conv2d_cpu_int8 =
123-
::paddle::inference::anakin::Conv2dOpConverter<::anakin::saber::X86,
124-
::anakin::Precision::INT8>;
125-
REGISTER_CPU_ANAKIN_OP_CONVERTER(conv2d, conv2d_cpu_fp32);
126-
REGISTER_CPU_INT8_ANAKIN_OP_CONVERTER(conv2d, conv2d_cpu_int8);
108+
REGISTER_ANAKIN_OP_CONVERTER(conv2d, Conv2dOpConverter);

paddle/fluid/inference/anakin/convert/conv2d_fusion.cc

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -111,22 +111,4 @@ void Conv2dFusionOpConverter<TargetT, PrecisionT>::operator()(
111111
} // namespace inference
112112
} // namespace paddle
113113

114-
#ifdef PADDLE_WITH_CUDA
115-
using conv2d_fusion_nv_fp32 =
116-
::paddle::inference::anakin::Conv2dFusionOpConverter<
117-
::anakin::saber::NV, ::anakin::Precision::FP32>;
118-
using conv2d_fusion_nv_int8 =
119-
::paddle::inference::anakin::Conv2dFusionOpConverter<
120-
::anakin::saber::NV, ::anakin::Precision::INT8>;
121-
REGISTER_CUDA_ANAKIN_OP_CONVERTER(conv2d_fusion, conv2d_fusion_nv_fp32);
122-
REGISTER_CUDA_INT8_ANAKIN_OP_CONVERTER(conv2d_fusion, conv2d_fusion_nv_int8);
123-
#endif
124-
using conv2d_fusion_cpu_fp32 =
125-
::paddle::inference::anakin::Conv2dFusionOpConverter<
126-
::anakin::saber::X86, ::anakin::Precision::FP32>;
127-
using conv2d_fusion_cpu_int8 =
128-
::paddle::inference::anakin::Conv2dFusionOpConverter<
129-
::anakin::saber::X86, ::anakin::Precision::INT8>;
130-
131-
REGISTER_CPU_ANAKIN_OP_CONVERTER(conv2d_fusion, conv2d_fusion_cpu_fp32);
132-
REGISTER_CPU_INT8_ANAKIN_OP_CONVERTER(conv2d_fusion, conv2d_fusion_cpu_int8);
114+
REGISTER_ANAKIN_OP_CONVERTER(conv2d_fusion, Conv2dFusionOpConverter);

paddle/fluid/inference/anakin/convert/density_prior_box.cc

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -108,25 +108,5 @@ void DensityPriorBoxOpConverter<TargetT, PrecisionT>::operator()(
108108
} // namespace inference
109109
} // namespace paddle
110110

111-
#ifdef PADDLE_WITH_CUDA
112-
using ds_pr_nv_fp32 = ::paddle::inference::anakin::DensityPriorBoxOpConverter<
113-
::anakin::saber::NV, ::anakin::Precision::FP32>;
114-
using ds_pr_nv_int8 = ::paddle::inference::anakin::DensityPriorBoxOpConverter<
115-
::anakin::saber::NV, ::anakin::Precision::INT8>;
116-
117-
REGISTER_CUDA_ANAKIN_OP_CONVERTER(density_prior_box, ds_pr_nv_fp32);
118-
REGISTER_CUDA_ANAKIN_OP_CONVERTER(prior_box, ds_pr_nv_fp32);
119-
REGISTER_CUDA_INT8_ANAKIN_OP_CONVERTER(density_prior_box, ds_pr_nv_int8);
120-
REGISTER_CUDA_INT8_ANAKIN_OP_CONVERTER(prior_box, ds_pr_nv_int8);
121-
#endif
122-
123-
using ds_pr_cpu_fp32 = ::paddle::inference::anakin::DensityPriorBoxOpConverter<
124-
::anakin::saber::X86, ::anakin::Precision::FP32>;
125-
using ds_pr_cpu_int8 = ::paddle::inference::anakin::DensityPriorBoxOpConverter<
126-
::anakin::saber::X86, ::anakin::Precision::INT8>;
127-
128-
REGISTER_CPU_ANAKIN_OP_CONVERTER(density_prior_box, ds_pr_cpu_fp32);
129-
REGISTER_CPU_ANAKIN_OP_CONVERTER(prior_box, ds_pr_cpu_fp32);
130-
131-
REGISTER_CPU_INT8_ANAKIN_OP_CONVERTER(density_prior_box, ds_pr_cpu_int8);
132-
REGISTER_CPU_INT8_ANAKIN_OP_CONVERTER(prior_box, ds_pr_cpu_int8);
111+
REGISTER_ANAKIN_OP_CONVERTER(density_prior_box, DensityPriorBoxOpConverter);
112+
REGISTER_ANAKIN_OP_CONVERTER(prior_box, DensityPriorBoxOpConverter);

paddle/fluid/inference/anakin/convert/detection_out.cc

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -66,22 +66,4 @@ void DetectionOutOpConverter<TargetT, PrecisionT>::operator()(
6666
} // namespace inference
6767
} // namespace paddle
6868

69-
#ifdef PADDLE_WITH_CUDA
70-
using detection_out_nv_fp32 =
71-
::paddle::inference::anakin::DetectionOutOpConverter<
72-
::anakin::saber::NV, ::anakin::Precision::FP32>;
73-
using detection_out_nv_int8 =
74-
::paddle::inference::anakin::DetectionOutOpConverter<
75-
::anakin::saber::NV, ::anakin::Precision::INT8>;
76-
REGISTER_CUDA_ANAKIN_OP_CONVERTER(detection_out, detection_out_nv_fp32);
77-
REGISTER_CUDA_INT8_ANAKIN_OP_CONVERTER(detection_out, detection_out_nv_int8);
78-
#endif
79-
80-
using detection_out_cpu_fp32 =
81-
::paddle::inference::anakin::DetectionOutOpConverter<
82-
::anakin::saber::X86, ::anakin::Precision::FP32>;
83-
using detection_out_cpu_int8 =
84-
::paddle::inference::anakin::DetectionOutOpConverter<
85-
::anakin::saber::X86, ::anakin::Precision::INT8>;
86-
REGISTER_CPU_ANAKIN_OP_CONVERTER(detection_out, detection_out_cpu_fp32);
87-
REGISTER_CPU_INT8_ANAKIN_OP_CONVERTER(detection_out, detection_out_cpu_int8);
69+
REGISTER_ANAKIN_OP_CONVERTER(detection_out, DetectionOutOpConverter);

paddle/fluid/inference/anakin/convert/dropout.cc

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -52,22 +52,4 @@ void DropoutOpConverter<TargetT, PrecisionT>::operator()(
5252
} // namespace inference
5353
} // namespace paddle
5454

55-
#ifdef PADDLE_WITH_CUDA
56-
using dropout_nv_fp32 =
57-
::paddle::inference::anakin::DropoutOpConverter<::anakin::saber::NV,
58-
::anakin::Precision::FP32>;
59-
using dropout_nv_int8 =
60-
::paddle::inference::anakin::DropoutOpConverter<::anakin::saber::NV,
61-
::anakin::Precision::INT8>;
62-
REGISTER_CUDA_ANAKIN_OP_CONVERTER(dropout, dropout_nv_fp32);
63-
REGISTER_CUDA_INT8_ANAKIN_OP_CONVERTER(dropout, dropout_nv_int8);
64-
#endif
65-
66-
using dropout_cpu_fp32 =
67-
::paddle::inference::anakin::DropoutOpConverter<::anakin::saber::X86,
68-
::anakin::Precision::FP32>;
69-
using dropout_cpu_int8 =
70-
::paddle::inference::anakin::DropoutOpConverter<::anakin::saber::X86,
71-
::anakin::Precision::INT8>;
72-
REGISTER_CPU_ANAKIN_OP_CONVERTER(dropout, dropout_cpu_fp32);
73-
REGISTER_CPU_INT8_ANAKIN_OP_CONVERTER(dropout, dropout_cpu_int8);
55+
REGISTER_ANAKIN_OP_CONVERTER(dropout, DropoutOpConverter);

0 commit comments

Comments
 (0)