Skip to content

Commit fd73fb9

Browse files
committed
Update
[ghstack-poisoned]
1 parent 8d57c95 commit fd73fb9

File tree

6 files changed

+560
-0
lines changed

6 files changed

+560
-0
lines changed
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
# (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
2+
3+
# pyre-strict
4+
5+
from typing import Callable
6+
7+
import torch
8+
9+
from executorch.backends.test.compliance_suite import (
10+
dtype_test,
11+
operator_test,
12+
OperatorTest,
13+
)
14+
15+
class Model(torch.nn.Module):
16+
def __init__(
17+
self,
18+
in_channels=3,
19+
out_channels=6,
20+
kernel_size=3,
21+
stride=1,
22+
padding=0,
23+
dilation=1,
24+
groups=1,
25+
bias=True,
26+
padding_mode="zeros",
27+
):
28+
super().__init__()
29+
self.conv = torch.nn.Conv1d(
30+
in_channels=in_channels,
31+
out_channels=out_channels,
32+
kernel_size=kernel_size,
33+
stride=stride,
34+
padding=padding,
35+
dilation=dilation,
36+
groups=groups,
37+
bias=bias,
38+
padding_mode=padding_mode,
39+
)
40+
41+
def forward(self, x):
42+
return self.conv(x)
43+
44+
@operator_test
45+
class TestConv1d(OperatorTest):
46+
@dtype_test
47+
def test_conv1d_dtype(self, dtype, tester_factory: Callable) -> None:
48+
# Input shape: (batch_size, in_channels, length)
49+
self._test_op(Model().to(dtype), ((torch.rand(2, 3, 10) * 10).to(dtype),), tester_factory)
50+
51+
def test_conv1d_basic(self, tester_factory: Callable) -> None:
52+
# Basic test with default parameters
53+
self._test_op(Model(), (torch.randn(2, 3, 10),), tester_factory)
54+
55+
def test_conv1d_kernel_size(self, tester_factory: Callable) -> None:
56+
# Test with different kernel sizes
57+
self._test_op(Model(kernel_size=1), (torch.randn(2, 3, 10),), tester_factory)
58+
self._test_op(Model(kernel_size=5), (torch.randn(2, 3, 10),), tester_factory)
59+
60+
def test_conv1d_stride(self, tester_factory: Callable) -> None:
61+
# Test with different stride values
62+
self._test_op(Model(stride=2), (torch.randn(2, 3, 10),), tester_factory)
63+
64+
def test_conv1d_padding(self, tester_factory: Callable) -> None:
65+
# Test with different padding values
66+
self._test_op(Model(padding=1), (torch.randn(2, 3, 10),), tester_factory)
67+
self._test_op(Model(padding=2), (torch.randn(2, 3, 10),), tester_factory)
68+
69+
def test_conv1d_dilation(self, tester_factory: Callable) -> None:
70+
# Test with different dilation values
71+
self._test_op(Model(dilation=2), (torch.randn(2, 3, 10),), tester_factory)
72+
73+
def test_conv1d_groups(self, tester_factory: Callable) -> None:
74+
# Test with groups=3 (in_channels must be divisible by groups)
75+
self._test_op(Model(in_channels=6, out_channels=6, groups=3), (torch.randn(2, 6, 10),), tester_factory)
76+
77+
def test_conv1d_no_bias(self, tester_factory: Callable) -> None:
78+
# Test without bias
79+
self._test_op(Model(bias=False), (torch.randn(2, 3, 10),), tester_factory)
80+
81+
def test_conv1d_padding_modes(self, tester_factory: Callable) -> None:
82+
# Test different padding modes
83+
for mode in ["zeros", "reflect", "replicate", "circular"]:
84+
self._test_op(Model(padding=1, padding_mode=mode), (torch.randn(2, 3, 10),), tester_factory)
85+
86+
def test_conv1d_channels(self, tester_factory: Callable) -> None:
87+
# Test with different channel configurations
88+
self._test_op(Model(in_channels=1, out_channels=1), (torch.randn(2, 1, 10),), tester_factory)
89+
self._test_op(Model(in_channels=5, out_channels=10), (torch.randn(2, 5, 10),), tester_factory)
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
# (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
2+
3+
# pyre-strict
4+
5+
from typing import Callable, Union, Tuple
6+
7+
import torch
8+
9+
from executorch.backends.test.compliance_suite import (
10+
dtype_test,
11+
operator_test,
12+
OperatorTest,
13+
)
14+
15+
class Model(torch.nn.Module):
16+
def __init__(
17+
self,
18+
in_channels=3,
19+
out_channels=6,
20+
kernel_size=3,
21+
stride=1,
22+
padding=0,
23+
dilation=1,
24+
groups=1,
25+
bias=True,
26+
padding_mode="zeros",
27+
):
28+
super().__init__()
29+
self.conv = torch.nn.Conv2d(
30+
in_channels=in_channels,
31+
out_channels=out_channels,
32+
kernel_size=kernel_size,
33+
stride=stride,
34+
padding=padding,
35+
dilation=dilation,
36+
groups=groups,
37+
bias=bias,
38+
padding_mode=padding_mode,
39+
)
40+
41+
def forward(self, x):
42+
return self.conv(x)
43+
44+
@operator_test
45+
class TestConv2d(OperatorTest):
46+
@dtype_test
47+
def test_conv2d_dtype(self, dtype, tester_factory: Callable) -> None:
48+
# Input shape: (batch_size, in_channels, height, width)
49+
self._test_op(Model().to(dtype), ((torch.rand(2, 3, 8, 8) * 10).to(dtype),), tester_factory)
50+
51+
def test_conv2d_basic(self, tester_factory: Callable) -> None:
52+
# Basic test with default parameters
53+
self._test_op(Model(), (torch.randn(2, 3, 8, 8),), tester_factory)
54+
55+
def test_conv2d_kernel_size(self, tester_factory: Callable) -> None:
56+
# Test with different kernel sizes
57+
self._test_op(Model(kernel_size=1), (torch.randn(2, 3, 8, 8),), tester_factory)
58+
self._test_op(Model(kernel_size=5), (torch.randn(2, 3, 8, 8),), tester_factory)
59+
self._test_op(Model(kernel_size=(3, 5)), (torch.randn(2, 3, 8, 8),), tester_factory)
60+
61+
def test_conv2d_stride(self, tester_factory: Callable) -> None:
62+
# Test with different stride values
63+
self._test_op(Model(stride=2), (torch.randn(2, 3, 8, 8),), tester_factory)
64+
self._test_op(Model(stride=(2, 1)), (torch.randn(2, 3, 8, 8),), tester_factory)
65+
66+
def test_conv2d_padding(self, tester_factory: Callable) -> None:
67+
# Test with different padding values
68+
self._test_op(Model(padding=1), (torch.randn(2, 3, 8, 8),), tester_factory)
69+
self._test_op(Model(padding=(1, 2)), (torch.randn(2, 3, 8, 8),), tester_factory)
70+
71+
def test_conv2d_dilation(self, tester_factory: Callable) -> None:
72+
# Test with different dilation values
73+
self._test_op(Model(dilation=2), (torch.randn(2, 3, 8, 8),), tester_factory)
74+
self._test_op(Model(dilation=(2, 1)), (torch.randn(2, 3, 8, 8),), tester_factory)
75+
76+
def test_conv2d_groups(self, tester_factory: Callable) -> None:
77+
# Test with groups=3 (in_channels must be divisible by groups)
78+
self._test_op(Model(in_channels=6, out_channels=6, groups=3), (torch.randn(2, 6, 8, 8),), tester_factory)
79+
80+
def test_conv2d_no_bias(self, tester_factory: Callable) -> None:
81+
# Test without bias
82+
self._test_op(Model(bias=False), (torch.randn(2, 3, 8, 8),), tester_factory)
83+
84+
def test_conv2d_padding_modes(self, tester_factory: Callable) -> None:
85+
# Test different padding modes
86+
for mode in ["zeros", "reflect", "replicate", "circular"]:
87+
self._test_op(Model(padding=1, padding_mode=mode), (torch.randn(2, 3, 8, 8),), tester_factory)
88+
89+
def test_conv2d_channels(self, tester_factory: Callable) -> None:
90+
# Test with different channel configurations
91+
self._test_op(Model(in_channels=1, out_channels=1), (torch.randn(2, 1, 8, 8),), tester_factory)
92+
self._test_op(Model(in_channels=5, out_channels=10), (torch.randn(2, 5, 8, 8),), tester_factory)
93+
94+
def test_conv2d_different_spatial_dims(self, tester_factory: Callable) -> None:
95+
# Test with different height and width
96+
self._test_op(Model(), (torch.randn(2, 3, 10, 8),), tester_factory)
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
# (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
2+
3+
# pyre-strict
4+
5+
from typing import Callable, Union, Tuple
6+
7+
import torch
8+
9+
from executorch.backends.test.compliance_suite import (
10+
dtype_test,
11+
operator_test,
12+
OperatorTest,
13+
)
14+
15+
class Model(torch.nn.Module):
16+
def __init__(
17+
self,
18+
in_channels=3,
19+
out_channels=6,
20+
kernel_size=3,
21+
stride=1,
22+
padding=0,
23+
dilation=1,
24+
groups=1,
25+
bias=True,
26+
padding_mode="zeros",
27+
):
28+
super().__init__()
29+
self.conv = torch.nn.Conv3d(
30+
in_channels=in_channels,
31+
out_channels=out_channels,
32+
kernel_size=kernel_size,
33+
stride=stride,
34+
padding=padding,
35+
dilation=dilation,
36+
groups=groups,
37+
bias=bias,
38+
padding_mode=padding_mode,
39+
)
40+
41+
def forward(self, x):
42+
return self.conv(x)
43+
44+
@operator_test
45+
class TestConv3d(OperatorTest):
46+
@dtype_test
47+
def test_conv3d_dtype(self, dtype, tester_factory: Callable) -> None:
48+
# Input shape: (batch_size, in_channels, depth, height, width)
49+
self._test_op(Model().to(dtype), ((torch.rand(2, 3, 4, 4, 4) * 10).to(dtype),), tester_factory)
50+
51+
def test_conv3d_basic(self, tester_factory: Callable) -> None:
52+
# Basic test with default parameters
53+
self._test_op(Model(), (torch.randn(2, 3, 4, 4, 4),), tester_factory)
54+
55+
def test_conv3d_kernel_size(self, tester_factory: Callable) -> None:
56+
# Test with different kernel sizes
57+
self._test_op(Model(kernel_size=1), (torch.randn(2, 3, 4, 4, 4),), tester_factory)
58+
self._test_op(Model(kernel_size=(1, 3, 3)), (torch.randn(2, 3, 4, 4, 4),), tester_factory)
59+
60+
def test_conv3d_stride(self, tester_factory: Callable) -> None:
61+
# Test with different stride values
62+
self._test_op(Model(stride=2), (torch.randn(2, 3, 6, 6, 6),), tester_factory)
63+
self._test_op(Model(stride=(1, 2, 2)), (torch.randn(2, 3, 4, 6, 6),), tester_factory)
64+
65+
def test_conv3d_padding(self, tester_factory: Callable) -> None:
66+
# Test with different padding values
67+
self._test_op(Model(padding=1), (torch.randn(2, 3, 4, 4, 4),), tester_factory)
68+
self._test_op(Model(padding=(0, 1, 1)), (torch.randn(2, 3, 4, 4, 4),), tester_factory)
69+
70+
def test_conv3d_dilation(self, tester_factory: Callable) -> None:
71+
# Test with different dilation values
72+
self._test_op(Model(dilation=2), (torch.randn(2, 3, 6, 6, 6),), tester_factory)
73+
self._test_op(Model(dilation=(1, 2, 2)), (torch.randn(2, 3, 4, 6, 6),), tester_factory)
74+
75+
def test_conv3d_groups(self, tester_factory: Callable) -> None:
76+
# Test with groups=3 (in_channels must be divisible by groups)
77+
self._test_op(Model(in_channels=6, out_channels=6, groups=3), (torch.randn(2, 6, 4, 4, 4),), tester_factory)
78+
79+
def test_conv3d_no_bias(self, tester_factory: Callable) -> None:
80+
# Test without bias
81+
self._test_op(Model(bias=False), (torch.randn(2, 3, 4, 4, 4),), tester_factory)
82+
83+
def test_conv3d_padding_modes(self, tester_factory: Callable) -> None:
84+
# Test different padding modes
85+
for mode in ["zeros", "reflect", "replicate", "circular"]:
86+
self._test_op(Model(padding=1, padding_mode=mode), (torch.randn(2, 3, 4, 4, 4),), tester_factory)
87+
88+
def test_conv3d_channels(self, tester_factory: Callable) -> None:
89+
# Test with different channel configurations
90+
self._test_op(Model(in_channels=1, out_channels=1), (torch.randn(2, 1, 4, 4, 4),), tester_factory)
91+
self._test_op(Model(in_channels=5, out_channels=10), (torch.randn(2, 5, 4, 4, 4),), tester_factory)
92+
93+
def test_conv3d_different_spatial_dims(self, tester_factory: Callable) -> None:
94+
# Test with different depth, height, and width
95+
self._test_op(Model(), (torch.randn(2, 3, 3, 4, 5),), tester_factory)
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
# (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.
2+
3+
# pyre-strict
4+
5+
from typing import Callable, Union, Tuple
6+
7+
import torch
8+
9+
from executorch.backends.test.compliance_suite import (
10+
dtype_test,
11+
operator_test,
12+
OperatorTest,
13+
)
14+
15+
class Model(torch.nn.Module):
16+
def __init__(
17+
self,
18+
in_channels=3,
19+
out_channels=6,
20+
kernel_size=3,
21+
stride=1,
22+
padding=0,
23+
output_padding=0,
24+
dilation=1,
25+
groups=1,
26+
bias=True,
27+
):
28+
super().__init__()
29+
self.conv_transpose = torch.nn.ConvTranspose1d(
30+
in_channels=in_channels,
31+
out_channels=out_channels,
32+
kernel_size=kernel_size,
33+
stride=stride,
34+
padding=padding,
35+
output_padding=output_padding,
36+
dilation=dilation,
37+
groups=groups,
38+
bias=bias,
39+
)
40+
41+
def forward(self, x):
42+
return self.conv_transpose(x)
43+
44+
@operator_test
45+
class TestConvTranspose1d(OperatorTest):
46+
@dtype_test
47+
def test_convtranspose1d_dtype(self, dtype, tester_factory: Callable) -> None:
48+
# Input shape: (batch_size, in_channels, length)
49+
self._test_op(Model().to(dtype), ((torch.rand(2, 3, 10) * 10).to(dtype),), tester_factory)
50+
51+
def test_convtranspose1d_basic(self, tester_factory: Callable) -> None:
52+
# Basic test with default parameters
53+
self._test_op(Model(), (torch.randn(2, 3, 10),), tester_factory)
54+
55+
def test_convtranspose1d_kernel_size(self, tester_factory: Callable) -> None:
56+
# Test with different kernel sizes
57+
self._test_op(Model(kernel_size=1), (torch.randn(2, 3, 10),), tester_factory)
58+
self._test_op(Model(kernel_size=5), (torch.randn(2, 3, 10),), tester_factory)
59+
60+
def test_convtranspose1d_stride(self, tester_factory: Callable) -> None:
61+
# Test with different stride values
62+
self._test_op(Model(stride=2), (torch.randn(2, 3, 10),), tester_factory)
63+
64+
def test_convtranspose1d_padding(self, tester_factory: Callable) -> None:
65+
# Test with different padding values
66+
self._test_op(Model(padding=1), (torch.randn(2, 3, 10),), tester_factory)
67+
self._test_op(Model(padding=2), (torch.randn(2, 3, 10),), tester_factory)
68+
69+
def test_convtranspose1d_output_padding(self, tester_factory: Callable) -> None:
70+
# Test with different output_padding values (requires stride > 1)
71+
self._test_op(Model(stride=2, output_padding=1), (torch.randn(2, 3, 10),), tester_factory)
72+
73+
def test_convtranspose1d_dilation(self, tester_factory: Callable) -> None:
74+
# Test with different dilation values
75+
self._test_op(Model(dilation=2), (torch.randn(2, 3, 10),), tester_factory)
76+
77+
def test_convtranspose1d_groups(self, tester_factory: Callable) -> None:
78+
# Test with groups=3 (in_channels and out_channels must be divisible by groups)
79+
self._test_op(Model(in_channels=6, out_channels=6, groups=3), (torch.randn(2, 6, 10),), tester_factory)
80+
81+
def test_convtranspose1d_no_bias(self, tester_factory: Callable) -> None:
82+
# Test without bias
83+
self._test_op(Model(bias=False), (torch.randn(2, 3, 10),), tester_factory)
84+
85+
def test_convtranspose1d_channels(self, tester_factory: Callable) -> None:
86+
# Test with different channel configurations
87+
self._test_op(Model(in_channels=1, out_channels=1), (torch.randn(2, 1, 10),), tester_factory)
88+
self._test_op(Model(in_channels=5, out_channels=10), (torch.randn(2, 5, 10),), tester_factory)
89+

0 commit comments

Comments
 (0)