@@ -318,6 +318,7 @@ def test_transpose_with_identity(self):
318
318
self .run_transpose_compare (["Z" ], {"X" : np .random .randn (2 , 3 , 4 , 5 ).astype (np .float32 )},
319
319
model_proto , remaining_transpose_num = 1 )
320
320
321
+ @check_opset_max_version (12 , "Squeeze/Unsqueeze changed in opset 13" )
321
322
def test_transpose_with_squeeze1 (self ):
322
323
# squeeze the first dim
323
324
node1 = helper .make_node ("Transpose" , ["X" ], ["Y" ], perm = [0 , 2 , 3 , 1 ], name = "trans" )
@@ -335,6 +336,26 @@ def test_transpose_with_squeeze1(self):
335
336
model_proto , remaining_transpose_num = 1 )
336
337
self .check_transpose_perm (model_after_opt , [1 , 2 , 0 ])
337
338
339
+ @check_opset_min_version (13 , "Squeeze/Unsqueeze changed in opset 13" )
340
+ def test_transpose_with_squeeze1_13 (self ):
341
+ # squeeze the first dim
342
+ node1 = helper .make_node ("Transpose" , ["X" ], ["Y" ], perm = [0 , 2 , 3 , 1 ], name = "trans" )
343
+ axes = self ._make_onnx_const (np .array ([0 ], dtype = np .int64 ), "axes" )
344
+ node2 = helper .make_node ("Squeeze" , ["Y" , "axes" ], ["Z" ], name = "squeeze" )
345
+
346
+ graph = helper .make_graph (
347
+ [node1 , node2 , axes ],
348
+ "transpose_with_squeeze" ,
349
+ [helper .make_tensor_value_info ("X" , TensorProto .FLOAT , (1 , 3 , 4 , 5 ))],
350
+ [helper .make_tensor_value_info ("Z" , TensorProto .FLOAT , (4 , 5 , 3 ))],
351
+ )
352
+
353
+ model_proto = self .make_model (graph , producer_name = "onnx-tests" )
354
+ model_after_opt = self .run_transpose_compare (["Z" ], {"X" : np .random .randn (1 , 3 , 4 , 5 ).astype (np .float32 )},
355
+ model_proto , remaining_transpose_num = 1 )
356
+ self .check_transpose_perm (model_after_opt , [1 , 2 , 0 ])
357
+
358
+ @check_opset_max_version (12 , "Squeeze/Unsqueeze changed in opset 13" )
338
359
def test_transpose_with_squeeze2 (self ):
339
360
# squeeze the second dim
340
361
node1 = helper .make_node ("Transpose" , ["X" ], ["Y" ], perm = [0 , 2 , 3 , 1 ], name = "trans" )
@@ -352,6 +373,26 @@ def test_transpose_with_squeeze2(self):
352
373
model_proto , remaining_transpose_num = 1 )
353
374
self .check_transpose_perm (model_after_opt , [0 , 2 , 1 ])
354
375
376
+ @check_opset_min_version (13 , "Squeeze/Unsqueeze changed in opset 13" )
377
+ def test_transpose_with_squeeze2_13 (self ):
378
+ # squeeze the second dim
379
+ node1 = helper .make_node ("Transpose" , ["X" ], ["Y" ], perm = [0 , 2 , 3 , 1 ], name = "trans" )
380
+ axes = self ._make_onnx_const (np .array ([1 ], dtype = np .int64 ), "axes" )
381
+ node2 = helper .make_node ("Squeeze" , ["Y" , "axes" ], ["Z" ], name = "squeeze" )
382
+
383
+ graph = helper .make_graph (
384
+ [node1 , node2 , axes ],
385
+ "transpose_with_squeeze" ,
386
+ [helper .make_tensor_value_info ("X" , TensorProto .FLOAT , (3 , 4 , 1 , 5 ))],
387
+ [helper .make_tensor_value_info ("Z" , TensorProto .FLOAT , (3 , 5 , 4 ))],
388
+ )
389
+
390
+ model_proto = self .make_model (graph , producer_name = "onnx-tests" )
391
+ model_after_opt = self .run_transpose_compare (["Z" ], {"X" : np .random .randn (3 , 4 , 1 , 5 ).astype (np .float32 )},
392
+ model_proto , remaining_transpose_num = 1 )
393
+ self .check_transpose_perm (model_after_opt , [0 , 2 , 1 ])
394
+
395
+ @check_opset_max_version (12 , "Squeeze/Unsqueeze changed in opset 13" )
355
396
def test_transpose_with_squeeze3 (self ):
356
397
# squeeze the last dim
357
398
node1 = helper .make_node ("Transpose" , ["X" ], ["Y" ], perm = [0 , 2 , 3 , 1 ], name = "trans" )
@@ -368,6 +409,25 @@ def test_transpose_with_squeeze3(self):
368
409
self .run_transpose_compare (["Z" ], {"X" : np .random .randn (3 , 1 , 4 , 5 ).astype (np .float32 )},
369
410
model_proto , remaining_transpose_num = 0 )
370
411
412
+ @check_opset_min_version (13 , "Squeeze/Unsqueeze changed in opset 13" )
413
+ def test_transpose_with_squeeze3_13 (self ):
414
+ # squeeze the last dim
415
+ node1 = helper .make_node ("Transpose" , ["X" ], ["Y" ], perm = [0 , 2 , 3 , 1 ], name = "trans" )
416
+ axes = self ._make_onnx_const (np .array ([3 ], dtype = np .int64 ), "axes" )
417
+ node2 = helper .make_node ("Squeeze" , ["Y" , "axes" ], ["Z" ], name = "squeeze" )
418
+
419
+ graph = helper .make_graph (
420
+ [node1 , node2 , axes ],
421
+ "transpose_with_squeeze" ,
422
+ [helper .make_tensor_value_info ("X" , TensorProto .FLOAT , (3 , 1 , 4 , 5 ))],
423
+ [helper .make_tensor_value_info ("Z" , TensorProto .FLOAT , (3 , 4 , 5 ))],
424
+ )
425
+
426
+ model_proto = self .make_model (graph , producer_name = "onnx-tests" )
427
+ self .run_transpose_compare (["Z" ], {"X" : np .random .randn (3 , 1 , 4 , 5 ).astype (np .float32 )},
428
+ model_proto , remaining_transpose_num = 0 )
429
+
430
+ @check_opset_max_version (12 , "Squeeze/Unsqueeze changed in opset 13" )
371
431
def test_transpose_with_squeeze4 (self ):
372
432
# squeeze the two dims
373
433
node1 = helper .make_node ("Transpose" , ["X" ], ["Y" ], perm = [0 , 2 , 3 , 1 ], name = "trans" )
@@ -384,6 +444,24 @@ def test_transpose_with_squeeze4(self):
384
444
self .run_transpose_compare (["Z" ], {"X" : np .random .randn (3 , 1 , 1 , 5 ).astype (np .float32 )},
385
445
model_proto , remaining_transpose_num = 0 )
386
446
447
+ @check_opset_min_version (13 , "Squeeze/Unsqueeze changed in opset 13" )
448
+ def test_transpose_with_squeeze4_13 (self ):
449
+ # squeeze the two dims
450
+ node1 = helper .make_node ("Transpose" , ["X" ], ["Y" ], perm = [0 , 2 , 3 , 1 ], name = "trans" )
451
+ axes = self ._make_onnx_const (np .array ([1 , 3 ], dtype = np .int64 ), "axes" )
452
+ node2 = helper .make_node ("Squeeze" , ["Y" , "axes" ], ["Z" ], name = "squeeze" )
453
+
454
+ graph = helper .make_graph (
455
+ [node1 , node2 , axes ],
456
+ "transpose_with_squeeze" ,
457
+ [helper .make_tensor_value_info ("X" , TensorProto .FLOAT , (3 , 1 , 1 , 5 ))],
458
+ [helper .make_tensor_value_info ("Z" , TensorProto .FLOAT , (3 , 5 ))],
459
+ )
460
+
461
+ model_proto = self .make_model (graph , producer_name = "onnx-tests" )
462
+ self .run_transpose_compare (["Z" ], {"X" : np .random .randn (3 , 1 , 1 , 5 ).astype (np .float32 )},
463
+ model_proto , remaining_transpose_num = 0 )
464
+
387
465
def test_transpose_with_loop (self ):
388
466
def _define_loop_graph (external_inputs ):
389
467
# external_inputs: external node which will be used by this graph
@@ -1090,6 +1168,7 @@ def test_const_fold_node_is_output(self):
1090
1168
self .run_transpose_compare (["res" ], {},
1091
1169
model_proto , remaining_transpose_num = 0 )
1092
1170
1171
+ @check_opset_max_version (12 , "Squeeze/Unsqueeze changed in opset 13" )
1093
1172
def test_const_fold_unsqueeze_with_const (self ):
1094
1173
shape = (6 , 6 )
1095
1174
const_tensor = helper .make_tensor (name = 'const_tensor' , data_type = TensorProto .FLOAT , dims = shape ,
@@ -1109,6 +1188,27 @@ def test_const_fold_unsqueeze_with_const(self):
1109
1188
self .run_and_compare (["res" ], {"X" : np .random .randn (1 ).astype (np .float32 )}, model_proto ,
1110
1189
"Unsqueeze" , 0 )
1111
1190
1191
+ @check_opset_min_version (13 , "Squeeze/Unsqueeze changed in opset 13" )
1192
+ def test_const_fold_unsqueeze_with_const_13 (self ):
1193
+ shape = (6 , 6 )
1194
+ const_tensor = helper .make_tensor (name = 'const_tensor' , data_type = TensorProto .FLOAT , dims = shape ,
1195
+ vals = np .random .randn (* shape ).flatten ().astype (np .float32 ))
1196
+ node1 = helper .make_node ("Constant" , [], ["const" ], value = const_tensor )
1197
+ axes = self ._make_onnx_const (np .array ([0 , 2 , 3 ], dtype = np .int64 ), "axes" )
1198
+ node2 = helper .make_node ("Unsqueeze" , ["const" , "axes" ], ["value1" ])
1199
+ node3 = helper .make_node ("Add" , ["value1" , "X" ], ["res" ])
1200
+
1201
+ graph = helper .make_graph (
1202
+ [node1 , node2 , node3 , axes ],
1203
+ "test_const_fold_unsqueeze_with_const" ,
1204
+ [helper .make_tensor_value_info ("X" , TensorProto .FLOAT , (1 ,))],
1205
+ [helper .make_tensor_value_info ("res" , TensorProto .FLOAT , (1 , 6 , 1 , 1 , 6 ))],
1206
+ )
1207
+
1208
+ model_proto = self .make_model (graph , producer_name = "onnx-tests" )
1209
+ self .run_and_compare (["res" ], {"X" : np .random .randn (1 ).astype (np .float32 )}, model_proto ,
1210
+ "Unsqueeze" , 0 )
1211
+
1112
1212
def test_const_fold_cast_with_const (self ):
1113
1213
shape = (6 , 6 )
1114
1214
const_tensor = helper .make_tensor (name = 'const_tensor' , data_type = TensorProto .FLOAT , dims = shape ,
0 commit comments