Browse Source

!10168 [MSLITE] fix group convolution destruction bug

From: @probiotics_53
Reviewed-by: @zhanghaibo5,@hangangqiang
Signed-off-by: @hangangqiang
tags/v1.1.0
mindspore-ci-bot Gitee 5 years ago
parent
commit
1f9ff76371
4 changed files with 9 additions and 3 deletions
  1. +4
    -1
      mindspore/lite/src/runtime/kernel/arm/fp16/group_convolution_fp16.cc
  2. +4
    -1
      mindspore/lite/src/runtime/kernel/arm/fp32/group_convolution_fp32.cc
  3. +0
    -1
      mindspore/lite/src/runtime/kernel/arm/int8/group_convolution_int8.h
  4. +1
    -0
      mindspore/lite/test/models_tflite_awaretraining.cfg

+ 4
- 1
mindspore/lite/src/runtime/kernel/arm/fp16/group_convolution_fp16.cc View File

@@ -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;
}
}



+ 4
- 1
mindspore/lite/src/runtime/kernel/arm/fp32/group_convolution_fp32.cc View File

@@ -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;
}
}



+ 0
- 1
mindspore/lite/src/runtime/kernel/arm/int8/group_convolution_int8.h View File

@@ -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;


+ 1
- 0
mindspore/lite/test/models_tflite_awaretraining.cfg View File

@@ -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