Python 从ResNet50网络中删除最后n层
我有以下网络,将用于医学图像数据的二值分类。然而,我只想使用这个模型的前80层,因为我目前没有很多数据,而且我的模型拟合过度。我想删除块4或5中的所有层,只保留块1、2和3。我尝试过使用layer.pop(),但它不起作用Python 从ResNet50网络中删除最后n层,python,keras,resnet,Python,Keras,Resnet,我有以下网络,将用于医学图像数据的二值分类。然而,我只想使用这个模型的前80层,因为我目前没有很多数据,而且我的模型拟合过度。我想删除块4或5中的所有层,只保留块1、2和3。我尝试过使用layer.pop(),但它不起作用 from keras.applications.resnet50 import ResNet50 resnet = ResNet50(include_top=False, weights='imagenet', input_shape=(im_size,im_size,3)
from keras.applications.resnet50 import ResNet50
resnet = ResNet50(include_top=False, weights='imagenet', input_shape=(im_size,im_size,3))
headModel = AveragePooling2D(pool_size=(7, 7))(resnet.output)
headModel = Flatten(name="flatten")(headModel)
headModel = Dense(256, activation="relu")(headModel)
headModel = Dropout(0.5)(headModel)
headModel = Dense(1, activation="sigmoid")(headModel)
解决方案1:您可以使用
model.summary()
快速检查层的名称(第80层)
解决方案2:
你可以像这样直接得到它:
intermediate_model = Model(inputs=resnet.input,
outputs=resnet.layers[80].output)
...
为什么不使用第二款受ResNet50启发的车型?然后可以保存这两个版本,并对它们进行比较。顺便说一句,80层已经是一个相当深的模型。
intermediate_model = Model(inputs=resnet.input,
outputs=resnet.layers[80].output)
...