How to "edit" the pretrained pytorch resnet18 network?


model = torchvision.models.resnet18(pretrained=True)

I am interested in making the following changes to the network:

  1. Truncate the network after the second layer, which in Pytorch is called “layer2”.

  2. Change the stride and padding of some the convolution layers.

As for 1 - will the following solution make “model2” inherit all the residual shortcuts of the first layers of resnset? (EDIT: it seems like the answer it “yes” but I will still be glad to know if it indeed makes sense)

first = model.conv1
second  = model.bn1
First_block = list(model.layer1.children() ) 
Second_block = list(model.layer2.children() ) 
Concat_list = First_block

model = nn.Sequential(first,second,...,*Concat_list) 

(I used “…” to signify similar implementation for the other network components, such as “bn1” and “maxpool”).

As for 2 -
How can I access and change the stride and padding of some of the convolution layers? for example - the ones in model.layer1? [EDIT: I think that something like “model.layer1[0].conv2.stride = …” will do it.)

Thanks in advance