# Codeblock 8 class BackboneNeck(nn.Module): def __init__(self): super().__init__() self.cnn = CNN() self.fpn = FPN() self.panet = PANet() def forward(self, x): c2, c3, c4, c5 = self.cnn(x) print(f'c2: {c2.size()}') print(f'c3: {c3.size()}') print(f'c4: {c4.size()}') print(f'c5: {c5.size()}\n') p2, p3, p4, p5 = self.fpn(c2, c3, c4, c5) print(f'p2: {p2.size()}') print(f'p3: {p3.size()}') print(f'p4: {p4.size()}') print(f'p5: {p5.size()}\n') n2, n3, n4, n5 = self.panet(p2, p3, p4, p5) print(f'n2: {n2.size()}') print(f'n3: {n3.size()}') print(f'n4: {n4.size()}') print(f'n5: {n5.size()}') return n2, n3, n4, n5