!10168 [MSLITE] fix group convolution destruction bug

From: @probiotics_53
Reviewed-by: @zhanghaibo5,@hangangqiang
Signed-off-by: @hangangqiang
pull/10168/MERGE
mindspore-ci-bot 5 years ago committed by Gitee
commit 1f9ff76371

@ -52,19 +52,22 @@ int GroupConvolutionFP16CPUKernel::ReSize() {
}
void GroupConvolutionFP16CPUKernel::FreeSubKernel() {
for (auto sub_conv : group_convs_) {
for (auto &sub_conv : group_convs_) {
// free sub conv input tensors / output tensors manually
auto sub_in_tensors = sub_conv->in_tensors();
auto sub_in_tensor_num = sub_in_tensors.size();
for (size_t i = 0; i < sub_in_tensor_num; ++i) {
delete sub_in_tensors[i];
sub_in_tensors[i] = nullptr;
}
auto sub_out_tensors = sub_conv->out_tensors();
auto sub_out_tensor_num = sub_out_tensors.size();
for (size_t i = 0; i < sub_out_tensor_num; ++i) {
delete sub_out_tensors[i];
sub_out_tensors[i] = nullptr;
}
delete sub_conv;
sub_conv = nullptr;
}
}

@ -57,19 +57,22 @@ int GroupConvolutionCPUKernel::ReSize() {
}
void GroupConvolutionCPUKernel::FreeSubKernel() {
for (auto sub_conv : group_convs_) {
for (auto &sub_conv : group_convs_) {
// free sub conv input tensors / output tensors manually
auto sub_in_tensors = sub_conv->in_tensors();
auto sub_in_tensor_num = sub_in_tensors.size();
for (size_t i = 0; i < sub_in_tensor_num; ++i) {
delete sub_in_tensors[i];
sub_in_tensors[i] = nullptr;
}
auto sub_out_tensors = sub_conv->out_tensors();
auto sub_out_tensor_num = sub_out_tensors.size();
for (size_t i = 0; i < sub_out_tensor_num; ++i) {
delete sub_out_tensors[i];
sub_out_tensors[i] = nullptr;
}
delete sub_conv;
sub_conv = nullptr;
}
}

@ -33,7 +33,6 @@ class GroupConvolutionInt8CPUKernel : public GroupConvolutionCPUKernel {
: GroupConvolutionCPUKernel(parameter, inputs, outputs, ctx, primitive, group_convs, group_num) {
} // opParameter(in channel, out channel) in this kernel has been split to groups, if
// you want to get real params, multiply in channel / out channel with group num
~GroupConvolutionInt8CPUKernel() override { GroupConvolutionCPUKernel::FreeSubKernel(); }
int Run() override;
void SeparateInput(int group_id) override;

@ -38,3 +38,4 @@ ssd_mobilenet_v1_1_default_1.tflite
object_detection_mobile_object_localizer_v1_1_default_1.tflite
gts_detect_0730_quant_frozen.tflite
gts_model_quant_frozen.tflite
inception_v2_224_quant.tflite

Loading…
Cancel
Save