Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从ResNet50网络中删除最后n层_Python_Keras_Resnet - Fatal编程技术网

Python 从ResNet50网络中删除最后n层

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)

我有以下网络,将用于医学图像数据的二值分类。然而,我只想使用这个模型的前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))

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)
...