[PT FE]: handle prim::ListConstruct + aten::pad case (#15288)
This commit is contained in:
1 parent
407590cfc2
commit
a12de8183c
4 files changed
+240
No files matched your search
@@ -108,3 +108,95 @@ class TestPad(PytorchLayerTest):
|
||||
def test_pad2d(self, pads, mode, value, ie_device, precision, ir_version):
|
||||
self._test(*self.create_model(pads, mode, value), ie_device, precision, ir_version,
|
||||
kwargs_to_prepare_input={'ndim': 2}, trace_model=True)
|
||||
|
||||
|
||||
class TestPadListPaddingings(PytorchLayerTest):
|
||||
def _prepare_input(self, ndim=4, pad_w=0, pad_h=0):
|
||||
import numpy as np
|
||||
input_5d_shape = [1, 3, 14, 14, 18]
|
||||
return (np.random.randn(*input_5d_shape[:ndim]).astype(np.float32), np.array(pad_w, dtype=np.int32), np.array(pad_h, dtype=np.int32))
|
||||
|
||||
def create_model(self, mode, value=None):
|
||||
import torch
|
||||
import torch.nn.functional as F
|
||||
|
||||
class aten_pad(torch.nn.Module):
|
||||
def __init__(self, mode, value=None):
|
||||
super().__init__()
|
||||
self.mode = mode
|
||||
self.value = value
|
||||
|
||||
def forward(self, x, pad_w:int, pad_h:int):
|
||||
return F.pad(x, [pad_w // 2, pad_w - pad_w // 2, pad_h // 2, pad_h - pad_h // 2], value=self.value)
|
||||
|
||||
ref_net = None
|
||||
|
||||
return aten_pad(mode, value), ref_net, "aten::pad"
|
||||
|
||||
@pytest.mark.parametrize("pad_w,pad_h,mode,value", [
|
||||
(2, 0, "reflect", None),
|
||||
(0, 2, "reflect", None),
|
||||
(10, 10, "reflect", None),
|
||||
(0, 0, "reflect", None),
|
||||
(5, 3, "reflect", None),
|
||||
(2, 0, "replicate", None),
|
||||
(0, 2, "replicate", None),
|
||||
(10, 10, "replicate", None),
|
||||
(5, 3, "replicate", None),
|
||||
(0, 0, "replicate", None),
|
||||
(2, 0, "constant", None),
|
||||
(0, 3, "constant", 42.),
|
||||
(4, 4, "constant", -0.57),
|
||||
(1, 2, "constant", None),
|
||||
(0, 0, "constant", -0.57),
|
||||
])
|
||||
@pytest.mark.nightly
|
||||
@pytest.mark.precommit
|
||||
def test_pad4d(self, pad_w, pad_h, mode, value, ie_device, precision, ir_version):
|
||||
self._test(*self.create_model(mode, value), ie_device, precision, ir_version,
|
||||
kwargs_to_prepare_input={'ndim': 4, "pad_w": pad_w, "pad_h": pad_h})
|
||||
|
||||
@pytest.mark.parametrize("pad_w,pad_h,mode,value", [
|
||||
(2, 0, "reflect", None),
|
||||
(0, 2, "reflect", None),
|
||||
(10, 10, "reflect", None),
|
||||
(0, 0, "reflect", None),
|
||||
(5, 3, "reflect", None),
|
||||
(2, 0, "replicate", None),
|
||||
(0, 2, "replicate", None),
|
||||
(10, 10, "replicate", None),
|
||||
(5, 3, "replicate", None),
|
||||
(0, 0, "replicate", None),
|
||||
(2, 0, "constant", None),
|
||||
(0, 3, "constant", 42.),
|
||||
(4, 4, "constant", -0.57),
|
||||
(1, 2, "constant", None),
|
||||
(0, 0, "constant", -0.57)
|
||||
])
|
||||
@pytest.mark.nightly
|
||||
def test_pad5d(self, pad_w, pad_h, mode, value, ie_device, precision, ir_version):
|
||||
self._test(*self.create_model(mode, value), ie_device, precision, ir_version,
|
||||
kwargs_to_prepare_input={'ndim': 5, "pad_w": pad_w, "pad_h": pad_h})
|
||||
|
||||
@pytest.mark.parametrize("pad_w,pad_h,mode,value", [
|
||||
(2, 0, "reflect", None),
|
||||
(0, 2, "reflect", None),
|
||||
(10, 10, "reflect", None),
|
||||
(0, 0, "reflect", None),
|
||||
(5, 3, "reflect", None),
|
||||
(2, 0, "replicate", None),
|
||||
(0, 2, "replicate", None),
|
||||
(10, 10, "replicate", None),
|
||||
(5, 3, "replicate", None),
|
||||
(0, 0, "replicate", None),
|
||||
(2, 0, "constant", None),
|
||||
(0, 3, "constant", 42.),
|
||||
(4, 4, "constant", -0.57),
|
||||
(1, 2, "constant", None),
|
||||
(0, 0, "constant", -0.57)
|
||||
])
|
||||
@pytest.mark.nightly
|
||||
@pytest.mark.precommit
|
||||
def test_pad2d(self, pad_w, pad_h, mode, value, ie_device, precision, ir_version):
|
||||
self._test(*self.create_model(mode, value), ie_device, precision, ir_version,
|
||||
kwargs_to_prepare_input={'ndim': 2, "pad_w": pad_w, "pad_h": pad_h})
|
||||
Reference in new issue
Block a user