Padding : nn.ZeroPad2d makes Error

Hello. I am now making GC-net-like own network,

where GC-net is : https://arxiv.org/pdf/1703.04309.pdf

I’m now having difficulty at 'cost-volume’making phase.

the code of the phase is :

def cost_volume(self, imgl, imgr):
    xx_list = []
    pad_opr1 = nn.ZeroPad2d((0, self.max_d, 0, 0))
    xleft = pad_opr1(imgl)
    for d in range(self.max_d):  # maxdisp+1 ?
        pad_opr2 = nn.ZeroPad2d((d, self.max_d - d, 0, 0))
        xright = pad_opr2(imgr)
        xx_temp = torch.cat((xleft, xright), 1)
        xx_list.append(xx_temp)
    xx = torch.cat(xx_list, 1)
    xx = xx.view(1, self.max_d, 64, int(self.height / 2), int(self.width / 2) + self.max_d)
    xx0 = xx.permute(0, 2, 1, 3, 4)
    xx0 = xx0[:, :, :, :, :int(self.width / 2)]
    return xx0

Here, ‘xleft = pad_opr1(imgl)’ code line makes error of following :

xleft = pad_opr1(imgl)
File “C:\Users\Administrator\PycharmProjects\eps\venv\lib\site-packages\torch\nn\modules\module.py”, line 550, in call
result = self.forward(*input, **kwargs)
File “C:\Users\Administrator\PycharmProjects\eps\venv\lib\site-packages\torch\nn\modules\padding.py”, line 17, in forward
return F.pad(input, self.padding, ‘constant’, self.value)
File “C:\Users\Administrator\PycharmProjects\eps\venv\lib\site-packages\torch\nn\functional.py”, line 3389, in _pad
assert len(pad) // 2 <= input.dim(), ‘Padding length too large’
AttributeError: ‘tuple’ object has no attribute ‘dim’

I cannot understand the error and guess how to deal with it.

Please anybody give me hints and breakthroughs and thank you very much.

Based on the error message it seems imgr is a tuple instead of a tensor.
Could you check the type and make sure to pass a tensor to the padding module?