diff --git a/mobile/src/operators/kernel/cl/conv_transpose_kernel.cpp b/mobile/src/operators/kernel/cl/conv_transpose_kernel.cpp index 8d66b50a99a6cd07de8dcf32867f1cb3c28d2232..4261681f3ec2b740516a42785bee30dc843b3a71 100644 --- a/mobile/src/operators/kernel/cl/conv_transpose_kernel.cpp +++ b/mobile/src/operators/kernel/cl/conv_transpose_kernel.cpp @@ -43,7 +43,10 @@ bool ConvTransposeKernel::Init( this->cl_helper_.AddKernel("conv_transpose3x3s2", "conv_transpose_kernel.cl"); } else { - PADDLE_MOBILE_THROW_EXCEPTION(" not support "); + param->ExecMode() = ConvTransposeParam::EXEC_CONVTRANS_FLOAT; + param->Filter()->InitConv2dTransposeFilterCLImage( + cl_helper_.CLContext(), cl_helper_.CLCommandQueue()); + this->cl_helper_.AddKernel("conv_transpose", "conv_transpose_kernel.cl"); } return true; } @@ -58,6 +61,9 @@ void ConvTransposeKernel::Compute( case ConvTransposeParam::EXEC_CONVTRANS3x3s2_FLOAT: ConvTranspose3x3s2AddBnRelu(&this->cl_helper_, param); break; + case ConvTransposeParam::EXEC_CONVTRANS_FLOAT: + ConvTransposeAddBnRelu(&this->cl_helper_, param); + break; default: PADDLE_MOBILE_THROW_EXCEPTION( "Invalid convolution transpose execute mode %d", param.ExecMode()); diff --git a/mobile/src/operators/op_param.h b/mobile/src/operators/op_param.h index 85dabe3bcd009c8c00a59ccf74b7651d907b6dc2..f588b9fc79e1fe0a69dd00afe6419e0ef1e2aa5b 100644 --- a/mobile/src/operators/op_param.h +++ b/mobile/src/operators/op_param.h @@ -2632,6 +2632,7 @@ class ConvTransposeParam : public OpParam { EXEC_DECONV4X4_FLOAT, EXEC_DEPTHWISETRANS_FLOAT, EXEC_CONVTRANS3x3s2_FLOAT, + EXEC_CONVTRANS_FLOAT, }; ExecMode &ExecMode() const { return exec_mode_; }