@@ -838,40 +838,27 @@ EthosnError EthosnAPI::ReinterpretQuantize(const Expr& expr,
838838}
839839
840840EthosnError EthosnAPI::Resize (const Expr& expr, ResizeParams* params) {
841- Call requantize = Downcast<Call>(expr);
842- Call resize = Downcast<Call>(requantize->args [0 ]);
841+ Call resize = Downcast<Call>(expr);
842+ const auto * input_ttype = resize->args [0 ]->checked_type ().as <TensorTypeNode>();
843+
844+ const auto * attrs = resize->attrs .as <Resize2DAttrs>();
845+ uint32_t height, width;
846+ EthosnError err = Tvm2Npu (attrs->size , &height, &width);
847+ params->resize_info = sl::ResizeInfo{sl::ResizeAlgorithm::NEAREST_NEIGHBOUR, height, width,
848+ params->input_info .m_QuantizationInfo };
843849
844- const auto * input_dtype = resize->args [0 ]->checked_type ().as <TensorTypeNode>();
845850 sl::TensorShape input_tensor_shape = {1 , 1 , 1 , 1 };
846- EthosnError err = Tvm2Npu (input_dtype->shape , &input_tensor_shape);
847851 sl::DataType input_tensor_dtype;
848- err += Tvm2Npu (input_dtype->dtype , &input_tensor_dtype);
849- float input_sc;
850- int input_zp;
851- err += AsConstant (requantize->args [2 ], &input_zp);
852- err += AsConstant (requantize->args [1 ], &input_sc);
853- sl::QuantizationInfo input_q_info;
854- err += Tvm2Npu (input_zp, input_sc, &input_q_info);
852+ err = Tvm2Npu (input_ttype->shape , &input_tensor_shape);
853+ err += Tvm2Npu (input_ttype->dtype , &input_tensor_dtype);
855854 params->input_info =
856- sl::TensorInfo (input_tensor_shape, input_tensor_dtype, sl::DataFormat::NHWC, input_q_info);
855+ sl::TensorInfo (input_tensor_shape, input_tensor_dtype, params->input_info .m_DataFormat ,
856+ params->input_info .m_QuantizationInfo );
857857
858- float output_sc;
859- int output_zp;
860- err += AsConstant (requantize->args [3 ], &output_sc);
861- err += AsConstant (requantize->args [4 ], &output_zp);
862- sl::QuantizationInfo resize_q_info;
863- err += Tvm2Npu (output_zp, output_sc, &resize_q_info);
864- const auto * attrs = resize->attrs .as <Resize2DAttrs>();
865- uint32_t height, width;
866- err += Tvm2Npu (attrs->size , &height, &width);
867- params->resize_info =
868- sl::ResizeInfo{sl::ResizeAlgorithm::NEAREST_NEIGHBOUR, height, width, resize_q_info};
869-
870- sl::TensorInfo output_info = params->input_info ;
871- output_info.m_Dimensions [1 ] = params->resize_info .m_NewHeight ;
872- output_info.m_Dimensions [2 ] = params->resize_info .m_NewWidth ;
873- output_info.m_QuantizationInfo = params->resize_info .m_OutputQuantizationInfo ;
874- params->output_info = output_info;
858+ sl::TensorInfo output_tensor_info;
859+ err += Tvm2Npu (resize->checked_type (), &output_tensor_info);
860+ output_tensor_info.m_QuantizationInfo = params->input_info .m_QuantizationInfo ;
861+ params->output_info = output_tensor_info;
875862
876863 return err;
877864}
0 commit comments