@@ -37,12 +37,15 @@ def reseed_model_per_test_run():
3737 np .random .seed (23 )
3838
3939
40+ @pytest .mark .parametrize ("bias" , [False , True ])
4041@pytest .mark .parametrize ("stride" , [1 , 2 ])
4142@pytest .mark .parametrize ("dilation" , [2 , 1 ])
4243@pytest .mark .parametrize ("kernel_size" , [(1 ,), (3 ,)])
43- def test_conv1d_quant_conversion (stride , dilation , kernel_size , mocker ):
44+ def test_conv1d_quant_conversion (bias , stride , dilation , kernel_size , mocker ):
4445 input_shape = (1 , 4 , 16 )
45- model = Conv1dModule (stride = stride , dilation = dilation , kernel_size = kernel_size )
46+ model = Conv1dModule (
47+ bias = bias , stride = stride , dilation = dilation , kernel_size = kernel_size
48+ )
4649 converter_spy = mocker .spy (EdgeProgramToIRConverter , "convert_program" )
4750 ops_spy = mocker .spy (ModelBuilder , "finish" )
4851
@@ -144,13 +147,17 @@ def test_conv1d_quant_conversion__padded(
144147 ) # `Conv` input zp.
145148
146149
150+ @pytest .mark .parametrize ("bias" , [False , True ])
147151@pytest .mark .parametrize ("stride" , [1 , 2 ])
148152@pytest .mark .parametrize ("dilation" , [2 , 1 ])
149153@pytest .mark .parametrize ("kernel_size" , [(1 ,), (3 ,)])
150- def test_conv1d_quant_conversion__depthwise (stride , dilation , kernel_size , mocker ):
154+ def test_conv1d_quant_conversion__depthwise (
155+ bias , stride , dilation , kernel_size , mocker
156+ ):
151157 input_shape = (1 , 4 , 16 )
152158 group = input_shape [1 ]
153159 model = Conv1dModule (
160+ bias = bias ,
154161 group = group ,
155162 in_channels = group ,
156163 out_channels = group ,
@@ -371,6 +378,26 @@ def test_conv1d_quant_conversion__depthwise__padded(
371378 (1 , 32 , 32 , 32 ),
372379 id = "In ch 32, out ch 32, kernel 4, padding (0, 2), dilation (1, 2)" ,
373380 ),
381+ pytest .param (
382+ Conv2dModule (
383+ in_channels = 8 , out_channels = 32 , kernel_size = 5 , padding = 3 , bias = False
384+ ),
385+ (1 , 8 , 32 , 32 ),
386+ id = "In ch 8, out ch 32, kernel 5, padding 3, no bias" ,
387+ ),
388+ pytest .param (
389+ Conv2dModule (
390+ in_channels = 32 ,
391+ out_channels = 32 ,
392+ kernel_size = 3 ,
393+ padding = (1 , 0 ),
394+ dilation = (3 , 1 ),
395+ bias = False ,
396+ ),
397+ (1 , 32 , 35 , 35 ),
398+ id = "In ch 32, out ch 32, kernel 3, padding (1, 0), dilation (3, 1),"
399+ "no bias" ,
400+ ),
374401 ],
375402)
376403def test_conv2d_quant_conversion (mocker , model : torch .nn .Module , input_shape ):
@@ -397,54 +424,20 @@ def test_conv2d_quant_conversion(mocker, model: torch.nn.Module, input_shape):
397424 )
398425
399426
400- @pytest .mark .parametrize ("stride" , [1 , 2 ])
401- @pytest .mark .parametrize ("dilation" , [1 , 2 ])
402- @pytest .mark .parametrize ("kernel_shape" , [[1 , 2 ], [3 , 3 ], [4 , 1 ]])
403- def test_conv2d_conversion__depthwise (stride , dilation , kernel_shape , mocker ):
404- input_shape = (1 , 3 , 12 , 16 )
405- group = input_shape [1 ]
406- edge_program = to_edge_program (
407- Conv2dModule (
408- group = group ,
409- in_channels = group ,
410- out_channels = group ,
411- stride = stride ,
412- dilation = dilation ,
413- kernel_size = kernel_shape ,
414- ),
415- input_shape ,
416- ).exported_program ()
417-
418- input_data = np .random .random (input_shape ).astype (np .float32 )
419-
420- spy = mocker .spy (ModelBuilder , "finish" )
421-
422- convert_run_compare (
423- edge_program ,
424- input_data ,
425- tflite_input_preprocess = ToChannelLastPreprocess (),
426- tflite_output_preprocess = ToChannelFirstPreprocess (),
427- atol = 4e-7 ,
428- )
429- conversion_result = spy .spy_return
430- ops = conversion_result .sub_graphs [0 ].operators .vector
431-
432- assert len (ops ) == 1
433- assert ops [0 ].builtin_options .operator_type == BuiltinOperator .DEPTHWISE_CONV_2D
434-
435-
427+ @pytest .mark .parametrize ("bias" , [False , True ])
436428@pytest .mark .parametrize ("stride" , [1 , 2 ])
437429@pytest .mark .parametrize ("dilation" , [1 , 2 ])
438430@pytest .mark .parametrize ("kernel_shape" , [[1 , 2 ], [3 , 3 ], [4 , 1 ]])
439431def test_conv2d_conversion__depthwise__quantized (
440- stride , dilation , kernel_shape , mocker
432+ bias , stride , dilation , kernel_shape , mocker
441433):
442434 input_shape = (1 , 4 , 12 , 12 )
443435 group = input_shape [1 ]
444436 spy = mocker .spy (ModelBuilder , "finish" )
445437
446438 edge_program = to_quantized_edge_program (
447439 Conv2dModule (
440+ bias = bias ,
448441 group = group ,
449442 in_channels = group ,
450443 out_channels = group ,
0 commit comments