diff --git a/tests/test_layer_streaming_fclayer_batch.py b/tests/test_layer_streaming_fclayer_batch.py new file mode 100644 index 0000000000000000000000000000000000000000..7334b0b662f0c2f537635b0735a0df6b7c94d0f7 --- /dev/null +++ b/tests/test_layer_streaming_fclayer_batch.py @@ -0,0 +1,49 @@ +import onnx +from onnx import TensorProto, helper +import numpy as np + +import finn.core.onnx_exec as oxe +from finn.core.datatype import DataType +from finn.core.modelwrapper import ModelWrapper + + +def test_fclayer_batch(): + inp = helper.make_tensor_value_info("inp", TensorProto.FLOAT, [1, 13, 64]) + outp = helper.make_tensor_value_info("outp", TensorProto.FLOAT, [1, 32, 32]) + + FCLayer_node = helper.make_node( + "StreamingFCLayer_Batch", + ["inp", "weights", "thresh"], + ["outp"], + domain='finn', + backend='fpgadataflow', + resType="ap_resource_lut()", + MW=832, + MH=1024, + SIMD=64, + PE=32, + resDataType="Recast<XnorMul>", + ) + + graph = helper.make_graph( + nodes=[FCLayer_node], name="fclayer_graph", inputs=[inp], outputs=[outp], value_info=[ + helper.make_tensor_value_info("weights", TensorProto.FLOAT, [64, 32, 416]), + helper.make_tensor_value_info("thresh", TensorProto.FLOAT, [32, 32, 1, 16, 1])] + ) + + model = helper.make_model(graph, producer_name="fclayer-model") + model = ModelWrapper(model) + + # set the tensor datatypes (in this case: all to bipolar) + for tensor in graph.input: + model.set_tensor_datatype(tensor.name, DataType["BIPOLAR"]) + for tensor in graph.output: + model.set_tensor_datatype(tensor.name, DataType["BIPOLAR"]) + + onnx.save(model.model, "fclayer-model.onnx") + + # generate input data + input_tensor = np.random.randint(2, size=832) + input_tensor = (np.asarray(input_tensor, dtype=np.float32)).reshape(1,13,64) + print(input_tensor) +