在pytorch中餐禁,常會load已有模型甚至pretrained的模型氯析,用其中幾層作為特征提绕瘛(feature extraction)懦铺。比如用pytorch內(nèi)置的pretrained ResNet作為特征提取器,需要把fully connected layer去掉贯要∨龋可以用children()方法提出需要的層
import torch.nn as nn
from torchvision import models
model = models.resnet50(pretrained=True)
truncated_model = nn.Sequential(*list(model.children())[:8])
print(truncated_model)
truncted_model可作為feature extractor,需要注意輸入輸出大小即可崇渗。
PS: *list
可以達到以下效果
l = ["./foo", "bar", "quux"]
funcXXX(*l)
# 等價于
funcXXX("./foo", "bar", "quux")
也即是字逗,iterate 提取list中的內(nèi)容,并以逗號分隔宅广。滿足nn.Sequential()的輸入條件