参考https://aistudio.baidu.com/aistudio/projectdetail/3718136
1.获取预训练模型层的输出
1.1 先查看预训练模型的层
In [1]
import paddle
import paddle.nn as nn
from paddle.vision import models
from paddle.vision import transforms
resnet_model = models.resnet50(pretrained=True)
print(resnet_model) #打印模型结构
定义特征提取函数
def resnet_img(model,input_x):
“”"
model: 预训练模型
input_x: 输入需提取特征的图片
“”"
model.eval()
# 通过属性的方式获取模型的层
x = model.conv1(input_x)
x = model.bn1(x)
x = model.relu(x)
x = model.maxpool(x)
x = model.layer1(x)
x = model.layer2(x)
x = model.layer3(x)
x = model.layer4(x)
# ======================
x = model.avgpool(x) # 到这层就是我们想要输出的层
x = paddle.flatten(x) # 输出为1维
return x
可以用来参考做模型裁剪