@@ -54,3 +54,37 @@ def test_accuracy(data, keras_model, hls_model):
54
54
y_hls4ml = hls_model .predict (X ).reshape (y_keras .shape )
55
55
# "accuracy" of hls4ml predictions vs keras
56
56
np .testing .assert_allclose (y_keras , y_hls4ml , rtol = 0 , atol = 1e-04 , verbose = True )
57
+
58
+
59
+ @pytest .fixture (scope = 'module' )
60
+ def keras_model_highdim ():
61
+ inp = Input (shape = (2 , 3 , 4 , 5 , 6 ), name = 'input_1' )
62
+ out = Permute ((3 , 5 , 4 , 1 , 2 ))(inp )
63
+ model = Model (inputs = inp , outputs = out )
64
+ return model
65
+
66
+
67
+ @pytest .fixture (scope = 'module' )
68
+ def data_highdim ():
69
+ X = np .random .randint (- 128 , 127 , (100 , 2 , 3 , 4 , 5 , 6 )) / 128
70
+ X = X .astype (np .float32 )
71
+ return X
72
+
73
+
74
+ @pytest .mark .parametrize ('io_type' , ['io_stream' , 'io_parallel' ])
75
+ @pytest .mark .parametrize ('backend' , ['Vivado' , 'Vitis' ])
76
+ def test_highdim_permute (data_highdim , keras_model_highdim , io_type , backend ):
77
+ X = data_highdim
78
+ model = keras_model_highdim
79
+
80
+ model_hls = hls4ml .converters .convert_from_keras_model (
81
+ model ,
82
+ io_type = io_type ,
83
+ backend = backend ,
84
+ output_dir = str (test_root_path / f'hls4mlprj_highdim_transpose_{ backend } _{ io_type } ' ),
85
+ )
86
+ model_hls .compile ()
87
+ y_keras = model .predict (X )
88
+ y_hls4ml = model_hls .predict (X ).reshape (y_keras .shape ) # type: ignore
89
+
90
+ assert np .all (y_keras == y_hls4ml )
0 commit comments