Skip to content

Commit e75efc3

Browse files
roman-janik-nxpStrycekSimon
authored andcommitted
NXP backend: Add tests for convolutions without bias
1 parent af3236f commit e75efc3

File tree

1 file changed

+33
-40
lines changed

1 file changed

+33
-40
lines changed

backends/nxp/tests/ir/converter/node_converter/test_conv_converter.py

Lines changed: 33 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -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
)
376403
def 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]])
439431
def 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

Comments
 (0)