不間斷更新。。。
增減layer
增加layer
增加layer很方便,可以使用model.add_module('layer name', layer)。
刪減layer
刪減layer很少用的到,之所以我會有這么一個需求,是因為我需要使用vgg做遷移學習,而且需要修改最后的輸出。
而vgg由兩個部分組成:features和classifier,這兩個部分都是torch.nn.Sequential,所以不能單獨對其中某一層做修改。
而如果對整個Sequential做修改,那么這個模型的參數會被初始化,而我又需要保留這些參數,所以才想到是否有辦法把最后一層fc刪掉,重新再填加一個不就行了?具體方法如下:
以vgg16為例,假設我們現在只需要對classifier的最后一層全連接層的輸出做修改:
model = models.vgg16(pretrained=True)
先看一下未做修改之前的classifier的參數:

- 截取要修改的layer之前的網絡
removed = list(model.classifier.children())[:-1]
model.classifier = torch.nn.Sequential(*removed)
- 添加fc層
model.add_module('fc', torch.nn.Linear(4096, out_num)) # out_num是你希望輸出的數量
此時我們看一下model以及classifier的參數有什么變化:


這達到了我預期的效果。