in habitat_baselines/il/models/models.py [0:0]
def forward(self, x: Tensor) -> Tuple[Tensor, Tensor, Tensor]:
conv1 = self.conv_block1(x)
conv2 = self.conv_block2(conv1)
conv3 = self.conv_block3(conv2)
conv4 = self.conv_block4(conv3)
if self.only_encoder:
return conv4.view(-1, 32 * 12 * 12)
encoder_output = self.classifier(conv4)
encoder_output_seg = self.encoder_seg(encoder_output)
encoder_output_depth = self.encoder_depth(encoder_output)
encoder_output_ae = self.encoder_ae(encoder_output)
score_pool2_seg = self.score_pool2_seg(conv2)
score_pool3_seg = self.score_pool3_seg(conv3)
score_pool2_depth = self.score_pool2_depth(conv2)
score_pool3_depth = self.score_pool3_depth(conv3)
score_pool2_ae = self.score_pool2_ae(conv2)
score_pool3_ae = self.score_pool3_ae(conv3)
score_seg = F.interpolate(
encoder_output_seg,
score_pool3_seg.size()[2:],
mode="bilinear",
align_corners=True,
)
score_seg += score_pool3_seg
score_seg = F.interpolate(
score_seg,
score_pool2_seg.size()[2:],
mode="bilinear",
align_corners=True,
)
score_seg += score_pool2_seg
out_seg = F.interpolate(
score_seg, x.size()[2:], mode="bilinear", align_corners=True
)
score_depth = F.interpolate(
encoder_output_depth,
score_pool3_depth.size()[2:],
mode="bilinear",
align_corners=True,
)
score_depth += score_pool3_depth
score_depth = F.interpolate(
score_depth,
score_pool2_depth.size()[2:],
mode="bilinear",
align_corners=True,
)
score_depth += score_pool2_depth
out_depth = torch.sigmoid(
F.interpolate(
score_depth, x.size()[2:], mode="bilinear", align_corners=True
)
)
score_ae = F.interpolate(
encoder_output_ae,
score_pool3_ae.size()[2:],
mode="bilinear",
align_corners=True,
)
score_ae += score_pool3_ae
score_ae = F.interpolate(
score_ae,
score_pool2_ae.size()[2:],
mode="bilinear",
align_corners=True,
)
score_ae += score_pool2_ae
out_ae = torch.sigmoid(
F.interpolate(
score_ae, x.size()[2:], mode="bilinear", align_corners=True
)
)
return out_seg, out_depth, out_ae