def forward(self, x):
    (batch_size, C, H, W) = x.shape
    '\n        mean=[0.485, 0.456, 0.406]\n        std =[0.229, 0.224, 0.225]\n        x = torch.cat([\n            (x-mean[2])/std[2],\n            (x-mean[1])/std[1],\n            (x-mean[0])/std[0],\n        ],1)\n        '
    x = x.float()
    e1 = self.encoder1(x)
    e2 = self.encoder2(e1)
    e3 = self.encoder3(e2)
    e4 = self.encoder4(e3)
    e5 = self.encoder5(e4)
    f = self.center(e5)
    d5 = self.decoder5(f, e5)
    d5 = self.se5(d5)
    d4 = self.decoder4(d5, e4)
    d4 = self.se4(d4)
    d3 = self.decoder3(d4, e3)
    d3 = self.se3(d3)
    d2 = self.decoder2(d3, e2)
    d2 = self.se2(d2)
    d1 = self.decoder1(d2)
    d1 = self.se1(d1)
    d = torch.cat((d1, F.upsample(d2, scale_factor=2, mode='bilinear', align_corners=False), F.upsample(d3, scale_factor=4, mode='bilinear', align_corners=False), F.upsample(d4, scale_factor=8, mode='bilinear', align_corners=False), F.upsample(d5, scale_factor=16, mode='bilinear', align_corners=False)), 1)
    '\n        d = F.dropout(d, p=0.50, training=self.training)\n        logit_pixel = self.logit_pixel(d)\n\n        f = F.adaptive_avg_pool2d(e5, output_size=1).view(batch_size,-1)\n        f = F.dropout(f, p=0.50, training=self.training)\n        logit_image = self.logit_image(f).view(-1)\n        '
    d = F.dropout(d, p=0.5, training=self.training)
    fuse_pixel = self.fuse_pixel(d)
    logit_pixel = self.logit_pixel(fuse_pixel)
    e = F.adaptive_avg_pool2d(e5, output_size=1).view(batch_size, (- 1))
    e = F.dropout(e, p=0.5, training=self.training)
    fuse_image = self.fuse_image(e)
    logit_image = self.logit_image(fuse_image).view((- 1))
    fuse = self.fuse(torch.cat([fuse_pixel, F.upsample(fuse_image.view(batch_size, (- 1), 1, 1), scale_factor=128, mode='nearest')], 1))
    logit = self.logit(fuse)
    return (logit, logit_pixel, logit_image)
def forward(self, x):
    (batch_size, C, H, W) = x.shape
    '\n        mean=[0.485, 0.456, 0.406]\n        std =[0.229, 0.224, 0.225]\n        x = torch.cat([\n            (x-mean[2])/std[2],\n            (x-mean[1])/std[1],\n            (x-mean[0])/std[0],\n        ],1)\n        '
    x = x.float()
    e1 = self.encoder1(x)
    e2 = self.encoder2(e1)
    e3 = self.encoder3(e2)
    e4 = self.encoder4(e3)
    e5 = self.encoder5(e4)
    f = self.center(e5)
    d5 = self.decoder5(f, e5)
    d5 = self.se5(d5)
    d4 = self.decoder4(d5, e4)
    d4 = self.se4(d4)
    d3 = self.decoder3(d4, e3)
    d3 = self.se3(d3)
    d2 = self.decoder2(d3, e2)
    d2 = self.se2(d2)
    d1 = self.decoder1(d2)
    d1 = self.se1(d1)
    d = torch.cat((d1, F.upsample(d2, scale_factor=2, mode='bilinear', align_corners=False), F.upsample(d3, scale_factor=4, mode='bilinear', align_corners=False), F.upsample(d4, scale_factor=8, mode='bilinear', align_corners=False), F.upsample(d5, scale_factor=16, mode='bilinear', align_corners=False)), 1)
    '\n        d = F.dropout(d, p=0.50, training=self.training)\n        logit_pixel = self.logit_pixel(d)\n\n        f = F.adaptive_avg_pool2d(e5, output_size=1).view(batch_size,-1)\n        f = F.dropout(f, p=0.50, training=self.training)\n        logit_image = self.logit_image(f).view(-1)\n        '
    d = F.dropout(d, p=0.5, training=self.training)
    fuse_pixel = self.fuse_pixel(d)
    logit_pixel = self.logit_pixel(fuse_pixel)
    e = F.adaptive_avg_pool2d(e5, output_size=1).view(batch_size, (- 1))
    e = F.dropout(e, p=0.5, training=self.training)
    fuse_image = self.fuse_image(e)
    logit_image = self.logit_image(fuse_image).view((- 1))
    fuse = self.fuse(torch.cat([fuse_pixel, F.upsample(fuse_image.view(batch_size, (- 1), 1, 1), scale_factor=128, mode='nearest')], 1))
    logit = self.logit(fuse)
    return (logit, logit_pixel, logit_image)