# N, C, H, W, K, kernel_size, stride=1, padding=0, output_padding=0, dilation=1, groups=1
conv_transpose2d_shapes = [
    # U-Net(https://arxiv.org/abs/1505.04597) with input size: 572 * 572
    (1, 1024, 28, 28, 512, 2, 2, 0, 0, 1, 1),   # 1*1024*28*28 -> 1*512*56*56
    (1, 512, 52, 52, 256, 2, 2, 0, 0, 1, 1),    # 1*512*52*52 -> 1*256*104*104
    (1, 256, 100, 100, 128, 2, 2, 0, 0, 1, 1),  # 1*256*100*100 -> 1*128*200*200
    (1, 128, 196, 196, 64, 2, 2, 0, 0, 1, 1),   # 1*128*196*196 -> 1*64*392*392

    # ShiftNet(https://arxiv.org/abs/1801.09392) with input size: 256*256
    (1, 512, 1, 1, 512, 4, 2, 1, 0, 1, 1),  # 1*512*1*1 -> 1*512*2*2
    (1, 1024, 2, 2, 512, 4, 2, 1, 0, 1, 1), # 1*1024*2*2 -> 1*512*4*4
    (1, 1024, 4, 4, 512, 4, 2, 1, 0, 1, 1), # 1*1024*4*4 -> 1*512*8*8
    (1, 1024, 8, 8, 512, 4, 2, 1, 0, 1, 1), # 1*1024*8*8 -> 1*512*16*16
    (1, 1024, 16, 16, 256, 4, 2, 1, 0, 1, 1), # 1*1024*16*16 -> 1*256*32*32
    (1, 768, 32, 32, 128, 4, 2, 1, 0, 1, 1), # 1*768*32*32 -> 1*128*64*64
    (1, 256, 64, 64, 64, 4, 2, 1, 0, 1, 1), # 1*256*64*64 -> 1*64*128*128
    (1, 128, 128, 128, 3, 4, 2, 1, 0, 1, 1), # 1*128*128*128 -> 1*3*256*256
]