From: @probiotics_53 Reviewed-by: @zhanghaibo5,@hangangqiang Signed-off-by: @hangangqiangtags/v1.1.0
| @@ -52,19 +52,22 @@ int GroupConvolutionFP16CPUKernel::ReSize() { | |||||
| } | } | ||||
| void GroupConvolutionFP16CPUKernel::FreeSubKernel() { | void GroupConvolutionFP16CPUKernel::FreeSubKernel() { | ||||
| for (auto sub_conv : group_convs_) { | |||||
| for (auto &sub_conv : group_convs_) { | |||||
| // free sub conv input tensors / output tensors manually | // free sub conv input tensors / output tensors manually | ||||
| auto sub_in_tensors = sub_conv->in_tensors(); | auto sub_in_tensors = sub_conv->in_tensors(); | ||||
| auto sub_in_tensor_num = sub_in_tensors.size(); | auto sub_in_tensor_num = sub_in_tensors.size(); | ||||
| for (size_t i = 0; i < sub_in_tensor_num; ++i) { | for (size_t i = 0; i < sub_in_tensor_num; ++i) { | ||||
| delete sub_in_tensors[i]; | delete sub_in_tensors[i]; | ||||
| sub_in_tensors[i] = nullptr; | |||||
| } | } | ||||
| auto sub_out_tensors = sub_conv->out_tensors(); | auto sub_out_tensors = sub_conv->out_tensors(); | ||||
| auto sub_out_tensor_num = sub_out_tensors.size(); | auto sub_out_tensor_num = sub_out_tensors.size(); | ||||
| for (size_t i = 0; i < sub_out_tensor_num; ++i) { | for (size_t i = 0; i < sub_out_tensor_num; ++i) { | ||||
| delete sub_out_tensors[i]; | delete sub_out_tensors[i]; | ||||
| sub_out_tensors[i] = nullptr; | |||||
| } | } | ||||
| delete sub_conv; | delete sub_conv; | ||||
| sub_conv = nullptr; | |||||
| } | } | ||||
| } | } | ||||
| @@ -57,19 +57,22 @@ int GroupConvolutionCPUKernel::ReSize() { | |||||
| } | } | ||||
| void GroupConvolutionCPUKernel::FreeSubKernel() { | void GroupConvolutionCPUKernel::FreeSubKernel() { | ||||
| for (auto sub_conv : group_convs_) { | |||||
| for (auto &sub_conv : group_convs_) { | |||||
| // free sub conv input tensors / output tensors manually | // free sub conv input tensors / output tensors manually | ||||
| auto sub_in_tensors = sub_conv->in_tensors(); | auto sub_in_tensors = sub_conv->in_tensors(); | ||||
| auto sub_in_tensor_num = sub_in_tensors.size(); | auto sub_in_tensor_num = sub_in_tensors.size(); | ||||
| for (size_t i = 0; i < sub_in_tensor_num; ++i) { | for (size_t i = 0; i < sub_in_tensor_num; ++i) { | ||||
| delete sub_in_tensors[i]; | delete sub_in_tensors[i]; | ||||
| sub_in_tensors[i] = nullptr; | |||||
| } | } | ||||
| auto sub_out_tensors = sub_conv->out_tensors(); | auto sub_out_tensors = sub_conv->out_tensors(); | ||||
| auto sub_out_tensor_num = sub_out_tensors.size(); | auto sub_out_tensor_num = sub_out_tensors.size(); | ||||
| for (size_t i = 0; i < sub_out_tensor_num; ++i) { | for (size_t i = 0; i < sub_out_tensor_num; ++i) { | ||||
| delete sub_out_tensors[i]; | delete sub_out_tensors[i]; | ||||
| sub_out_tensors[i] = nullptr; | |||||
| } | } | ||||
| delete sub_conv; | delete sub_conv; | ||||
| sub_conv = nullptr; | |||||
| } | } | ||||
| } | } | ||||
| @@ -33,7 +33,6 @@ class GroupConvolutionInt8CPUKernel : public GroupConvolutionCPUKernel { | |||||
| : GroupConvolutionCPUKernel(parameter, inputs, outputs, ctx, primitive, group_convs, group_num) { | : GroupConvolutionCPUKernel(parameter, inputs, outputs, ctx, primitive, group_convs, group_num) { | ||||
| } // opParameter(in channel, out channel) in this kernel has been split to groups, if | } // 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 | // you want to get real params, multiply in channel / out channel with group num | ||||
| ~GroupConvolutionInt8CPUKernel() override { GroupConvolutionCPUKernel::FreeSubKernel(); } | |||||
| int Run() override; | int Run() override; | ||||
| void SeparateInput(int group_id) 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 | object_detection_mobile_object_localizer_v1_1_default_1.tflite | ||||
| gts_detect_0730_quant_frozen.tflite | gts_detect_0730_quant_frozen.tflite | ||||
| gts_model_quant_frozen.tflite | gts_model_quant_frozen.tflite | ||||
| inception_v2_224_quant.tflite | |||||