On which size tensor can you use "bicubic" upsampling? Should bias be used on upsample?

I’m playing around with various upsampling techniques and tried using bicubic but am getting the following error:

NotImplementedError: Input Error: Only 3D, 4D and 5D input Tensors supported (got 4D) for the modes: nearest | linear | bilinear | trilinear (got bicubic)

When can/should bicubic be used?

And on a slightly unrelated note: is there a best practice for using bias on the upsampling convolution? I’ve seen a lot of models that don’t use bias but I’m not entirely sure why…

Thank you!

Code below:

def upconv(ni, nf, stride = 1):
    return nn.Conv2d(ni, nf, kernel_size = 3, stride = stride,
                     padding = 1, bias = True)

def upblock(ni, nf, mode, scale_factor = 2):
    return nn.Sequential(
        nn.Upsample(scale_factor = scale_factor, mode = mode),
        upconv(ni, nf),
        nn.BatchNorm2d(nf),
        nn.ReLU(inplace = True)
    )

self.decoder = nn.Sequential(
            
    upblock(1024, NDF * 8, mode = self.uptype),
    upblock(NDF * 8, NDF * 4, mode = self.uptype),
    upblock(NDF * 4, NDF * 2, mode = self.uptype),
            
    nn.Upsample(scale_factor = 2, mode = self.uptype),
    upconv(NDF * 2, NC),
    nn.Sigmoid()

)
1 Like

I am also facing similar issue. Got any solution?