(self, E4, E3, E2, E1,shape)
| 248 | |
| 249 | |
| 250 | def forward(self, E4, E3, E2, E1,shape): |
| 251 | E4, E3, E2, E1= self.side_conv1(E4), self.side_conv2(E3), self.side_conv3(E2), self.side_conv4(E1) |
| 252 | |
| 253 | if E4.size()[2:] != E3.size()[2:]: |
| 254 | E4 = F.interpolate(E4, size=E3.size()[2:], mode='bilinear') |
| 255 | if E2.size()[2:] != E3.size()[2:]: |
| 256 | E2 = F.interpolate(E2, size=E3.size()[2:], mode='bilinear') |
| 257 | |
| 258 | E5 = self.conv_block(E4, E3, E2) |
| 259 | |
| 260 | E4 = torch.cat((E4, E5),1) |
| 261 | E3 = torch.cat((E3, E5),1) |
| 262 | E2 = torch.cat((E2, E5),1) |
| 263 | |
| 264 | E4 = F.relu(self.fuse1(E4), inplace=True) |
| 265 | E3 = F.relu(self.fuse2(E3), inplace=True) |
| 266 | E2 = F.relu(self.fuse3(E2), inplace=True) |
| 267 | |
| 268 | P5 = self.predtrans5(E5) |
| 269 | |
| 270 | D4 = self.MSA5(E5, E4, P5) |
| 271 | D4 = F.interpolate(D4, size=E3.size()[2:], mode='bilinear') |
| 272 | P4 = self.predtrans4(D4) |
| 273 | |
| 274 | D3 = self.MSA4(D4, E3, P4) |
| 275 | D3 = F.interpolate(D3, size=E2.size()[2:], mode='bilinear') |
| 276 | P3 = self.predtrans3(D3) |
| 277 | |
| 278 | D2 = self.MSA3(D3, E2, P3) |
| 279 | D2 = F.interpolate(D2, size=E1.size()[2:], mode='bilinear') |
| 280 | P2 = self.predtrans2(D2) |
| 281 | |
| 282 | D1 = self.MSA2(D2, E1, P2) |
| 283 | P1 =self.predtrans1(D1) |
| 284 | |
| 285 | P1 = F.interpolate(P1, size=shape, mode='bilinear') |
| 286 | P2 = F.interpolate(P2, size=shape, mode='bilinear') |
| 287 | P3 = F.interpolate(P3, size=shape, mode='bilinear') |
| 288 | P4 = F.interpolate(P4, size=shape, mode='bilinear') |
| 289 | P5 = F.interpolate(P5, size=shape, mode='bilinear') |
| 290 | |
| 291 | return P5, P4, P3, P2, P1 |
| 292 | |
| 293 | def initialize(self): |
| 294 | weight_init(self) |
nothing calls this directly
no outgoing calls
no test coverage detected