def __init__(self, classes):
    super().__init__()
    self.initial_block = InitialBlock(3, 16)
    self.downsample1_0 = DownsamplingBottleneck(16, 64, padding=1, dropout_prob=0.03)
    self.factorized1_1 = Factorized_Block(64, 64, dropout_prob=0.03)
    self.factorized1_2 = Factorized_Block(64, 64, dropout_prob=0.03)
    self.factorized1_3 = Factorized_Block(64, 64, dropout_prob=0.03)
    self.factorized1_4 = Factorized_Block(64, 64, dropout_prob=0.03)
    self.downsample2_0 = DownsamplingBottleneck(64, 128, padding=1, dropout_prob=0.3)
    self.dilated2_1 = DilatedBlock(128, 128, dilation=2, dropout_prob=0.3)
    self.dilated2_2 = DilatedBlock(128, 128, dilation=5, dropout_prob=0.3)
    self.dilated2_3 = DilatedBlock(128, 128, dilation=9, dropout_prob=0.3)
    self.dilated2_4 = DilatedBlock(128, 128, dilation=2, dropout_prob=0.3)
    self.dilated2_5 = DilatedBlock(128, 128, dilation=5, dropout_prob=0.3)
    self.dilated2_6 = DilatedBlock(128, 128, dilation=9, dropout_prob=0.3)
    self.upsample4_0 = UpsamplingBottleneck(128, 64, dropout_prob=0.3)
    self.bottleneck4_1 = DilatedBlock(64, 64, dropout_prob=0.3)
    self.bottleneck4_2 = DilatedBlock(64, 64, dropout_prob=0.3)
    self.upsample5_0 = UpsamplingBottleneck(64, 16, dropout_prob=0.3)
    self.bottleneck5_1 = DilatedBlock(16, 16, dropout_prob=0.3)
    self.bottleneck5_2 = DilatedBlock(16, 16, dropout_prob=0.3)
    self.transposed_conv = nn.ConvTranspose2d(16, classes, kernel_size=3, stride=2, padding=1, output_padding=1, bias=False)
def __init__(self, classes):
    super().__init__()
    self.initial_block = InitialBlock(3, 16)
    self.downsample1_0 = DownsamplingBottleneck(16, 64, padding=1, dropout_prob=0.03)
    self.factorized1_1 = Factorized_Block(64, 64, dropout_prob=0.03)
    self.factorized1_2 = Factorized_Block(64, 64, dropout_prob=0.03)
    self.factorized1_3 = Factorized_Block(64, 64, dropout_prob=0.03)
    self.factorized1_4 = Factorized_Block(64, 64, dropout_prob=0.03)
    self.downsample2_0 = DownsamplingBottleneck(64, 128, padding=1, dropout_prob=0.3)
    self.dilated2_1 = DilatedBlock(128, 128, dilation=2, dropout_prob=0.3)
    self.dilated2_2 = DilatedBlock(128, 128, dilation=5, dropout_prob=0.3)
    self.dilated2_3 = DilatedBlock(128, 128, dilation=9, dropout_prob=0.3)
    self.dilated2_4 = DilatedBlock(128, 128, dilation=2, dropout_prob=0.3)
    self.dilated2_5 = DilatedBlock(128, 128, dilation=5, dropout_prob=0.3)
    self.dilated2_6 = DilatedBlock(128, 128, dilation=9, dropout_prob=0.3)
    self.upsample4_0 = UpsamplingBottleneck(128, 64, dropout_prob=0.3)
    self.bottleneck4_1 = DilatedBlock(64, 64, dropout_prob=0.3)
    self.bottleneck4_2 = DilatedBlock(64, 64, dropout_prob=0.3)
    self.upsample5_0 = UpsamplingBottleneck(64, 16, dropout_prob=0.3)
    self.bottleneck5_1 = DilatedBlock(16, 16, dropout_prob=0.3)
    self.bottleneck5_2 = DilatedBlock(16, 16, dropout_prob=0.3)
    self.transposed_conv = nn.ConvTranspose2d(16, classes, kernel_size=3, stride=2, padding=1, output_padding=1, bias=False)