finn icon indicating copy to clipboard operation
finn copied to clipboard

Need Transpose Before Flatten Layer 1D model Training

Open smtalds opened this issue 2 years ago • 2 comments

I applied this transform :

model = ModelWrapper(build_dir + "/end2end_cnv_w1a1_pre_post.onnx") model = model.transform(MoveScalarLinearPastInvariants()) model = model.transform(Streamline()) model = model.transform(LowerConvsToMatMul()) model = model.transform(MakeMaxPoolNHWC()) model = model.transform(absorb.AbsorbTransposeIntoMultiThreshold()) model = model.transform(absorb.AbsorbConsecutiveTransposes()) model = model.transform(ConvertBipolarMatMulToXnorPopcount()) model = model.transform(Streamline()) model = model.transform(absorb.AbsorbScalarMulAddIntoTopK()) model = model.transform(InferDataLayouts()) model = model.transform(RemoveUnusedTensors()) model.save(build_dir + "/end2end_cnv_w1a1_streamlined.onnx") And my onnx output this :

image

Then i applied hls conversion :

mem_mode = "decoupled" model = ModelWrapper(build_dir + "/end2end_cnv_w1a1_streamlined.onnx") model = model.transform(to_hls.InferBinaryMatrixVectorActivation(mem_mode)) model = model.transform(to_hls.InferQuantizedMatrixVectorActivation(mem_mode)) model = model.transform(to_hls.InferLabelSelectLayer()) model = model.transform(to_hls.InferThresholdingLayer()) model = model.transform(to_hls.InferConvInpGen()) model = model.transform(MakeMaxPoolNHWC()) model = model.transform(absorb.AbsorbConsecutiveTransposes()) model = model.transform(to_hls.InferStreamingMaxPool()) model = model.transform(RemoveCNVtoFCFlatten()) model = model.transform(absorb.AbsorbConsecutiveTransposes()) model = model.transform(InferDataLayouts()) parent_model = model.transform(CreateDataflowPartition()) parent_model.save(build_dir + "/end2end_cnv_w1a1_dataflow_parent.onnx") sdp_node = parent_model.get_nodes_by_op_type("StreamingDataflowPartition")[0] sdp_node = getCustomOp(sdp_node) dataflow_model_filename = sdp_node.get_nodeattr("model") dataflow_model = ModelWrapper(dataflow_model_filename) dataflow_model.save(build_dir + "/end2end_cnv_w1a1_dataflow_model.onnx")

And my onnx output this : image

I need transpose after maxpool_streaming layer for flatten , how can i do that ?

smtalds avatar Apr 28 '23 08:04 smtalds

@smtalds have you been able to solve this issue ?

GeorgeMentzos avatar Jun 19 '25 16:06 GeorgeMentzos

@GeorgeMentzos Hi, i dont remember exactly, but i guess i cant find solution. Maybe you can change model or research here. If you find a solution share us and close the issue.

smtalds avatar Jun 20 '25 05:06 smtalds