Thanks for the response!
The extractor is not trained first. It is part of the main network, i.e. convolutions are performed on input x, and then the new x is passed to linear layers in MyModel.
I should mentioned that only the main MyModel class contains an optimizer.  i.e.
class MyModel(nn.Module):
    def __init__(self, feature_extractor):
        super(MyModel, self).__init__()
        self.fc1 = nn.Linear(16, 10)
        self.fc2 = nn.Linear(10, 10)
        self.fc3 = nn.Linear(10, 4)
        self.feature_extractor = feature_extractor  #this is a CNN network that transforms the original data
        self.optimizer = optim.Adam(self.parameters(), lr=1e-3)

The feature extractor class does not contain an optimizer. I believe the backprop will still apply to the feature extractor class regardless, is my understanding correct?