This could be a silly question. I want to know how to pad my 3dCNN with a given (custom) number, not just zeros.
Also, if someone can refer me to a resource which gives a comprehensive explanation of padding modes would be very helpful.
padding_mode (string , optional ) –
To pad a given with a custom number, you will have to use the functionality
torch.nn.functional.pad() mentioned in the docs here.
A simple implementation can be:
# pads with custom float value and then performs 3d convolution
# no padding at convolution step
self.conv1 = nn.Conv3d(3, 16, 3, stride=2, padding=0)
self.p3d = (1, 1, 1, 1, 1, 1) # pad by (1, 1), (1, 1), and (1, 1)
def forward(self, x):
#p3d is dimensions to pad, constant means constant value padding, and 0 is the number you want to pad with
x = torch.nn.functional.pad(x, self.p3d, "constant", 0)
x = self.conv1(x)
This way you can pad with any custom number you want.
Thanks a lot
It is interesting how things are done in PyTorch