Kernel size in unit

if I try to change the kernel size of cnn in the following code it gives me error maybe because the dimensions of skip connection does not match x, How can I amend the code for kernel size 4

import torch
import torch.nn as nn
import torchvision.transforms.functional as TF

class DoubleConv(nn.Module):
def init(self, in_channels, out_channels):
super(DoubleConv, self).init()
self.conv = nn.Sequential(
nn.Conv2d(in_channels, out_channels, 4, 1, 1, bias=False),
nn.Conv2d(out_channels, out_channels, 4, 1, 1, bias=False),

def forward(self, x):
    return self.conv(x)

class UNET(nn.Module):
def init(
self, in_channels=3, out_channels=1, features=[64, 128, 256, 512],
super(UNET, self).init() = nn.ModuleList()
self.downs = nn.ModuleList()
self.pool = nn.MaxPool2d(kernel_size=2, stride=2)

    # Down part of UNET
    for feature in features:
        self.downs.append(DoubleConv(in_channels, feature))
        in_channels = feature

    # Up part of UNET
    for feature in reversed(features):
                feature*2, feature, kernel_size=2, stride=2,
        )*2, feature))

    self.bottleneck = DoubleConv(features[-1], features[-1]*2)
    self.final_conv = nn.Conv2d(features[0], out_channels, kernel_size=1)

def forward(self, x):
    skip_connections = []

    for down in self.downs:
        x = down(x)
        x = self.pool(x)

    x = self.bottleneck(x)
    skip_connections = skip_connections[::-1]

    for idx in range(0, len(, 2):
        x =[idx](x)
        skip_connection = skip_connections[idx//2]

        if x.shape != skip_connection.shape:
            x = TF.resize(x, size=skip_connection.shape[2:])

        concat_skip =, x), dim=1)
        x =[idx+1](concat_skip)

    return self.final_conv(x)

def test():
x = torch.randn((2, 1, 512, 512))
model = UNET(in_channels=1, out_channels=1)
preds = model(x)
assert preds.shape == x.shape

if name == “main”: