How to add extra layers to InceptionV3?

I have been using ResNet for transfer learning, but wanted to try Inception to see if I’d get better results. My way of doing this for ResNet is as follows:

class ResNet18(nn.Module):
    def __init__(self, orig_model):
        super(ResNet18, self).__init__()
        self.drop = nn.Dropout2d(0.5).to(device) = nn.BatchNorm2d(512).to(device)
        self.bn2 = nn.BatchNorm1d(256)
        self.bn3 = nn.BatchNorm1d(100)
        self.orig = nn.Sequential(*(list(orig_model.children())[:-1])).to(device)
        for param in self.orig.parameters():
            param.requires_grad = True
            # Replace the last fully-connected layer
            # Parameters of newly constructed modules have requires_grad=True by default
        self.fc = nn.Linear(512, 256).to(device)
        self.fc2 = nn.Linear(256, 100).to(device)
        self.fc3 = nn.Linear(100, 2).to(device)

    def forward(self, x):
        x = self.orig(x)
        x =
        x = x.view(x.size(0), -1)
        x = F.relu(self.bn2(self.fc(x)))
        x = self.drop(x)
        x = F.relu(self.bn3(self.fc2(x)))
        x = self.drop(x)
        x = F.relu(self.fc3(x))
        p = F.softmax(x, dim=1)
        return x, p

However, when I try this for Inception V3, I get errors. I have seen other solutions where they show how to manipulate the last FC layer. But I want to add more layers, and I haven’t seen a thread that shows a concrete example of this.

The forward method of Inception is using some functional API calls, which will be missed, if you wrap all submodules in an nn.Sequential container.
The better approach would be to derive your own class using Inception as the parent class and add your layers there.

Thank you. In this class, would I have to add the layers within the container, similar to this?