yeah,that works with adding
self.extractor = extractor
and in foward function
x = self.extra_conv1(x,self.extractor) ,
and the summary would be exactly like first case.Thanks!
And by the way,some people would initialize parameters inside of __init__ like:
def __init__(self):
    super().__init__()
    self.conv1 = Conv2d(3,32,kernel_size = 3,padding = 1)
    self.bn1 = BatchNorm2d(32)
    self.pooling1 = MaxPool2d(2,2)
    self.conv2 = Conv2d(32,64,kernel_size = 3,padding = 1)
    self.bn2 = BatchNorm2d(64)
    self.pooling2 = MaxPool2d(2,2)
    self.extra_conv1 = Conv2d(32,32,kernel_size=3,padding=1)
    for module in self.modules():
        if isinstance(module,nn.Conv2d):
            init.ones_(module.weight)

And  I add print("forward") in foward function to check if foward would be called while initializing , However When I build the model and write a code test :
model = MODEL()
for module in model.modules():
    if isinstance(module,nn.Conv2d):
        print(module.weight)

And the weight has already been initialized and there’s no print shows.
So to my understanding ,does this mean all weights  could be set before the whole model is created? Thanks!