如何删除(pop)Keras InceptionV3预训练模型的初始层?

时间:2019-05-03 05:08:41

标签: python tensorflow keras tf.keras

我正在尝试使用预训练的InceptionV3模型。但是,我想删除最初的五层并添加我的自定义层。我怎样才能做到这一点?我尝试过model.layers.pop(0),但仅靠这一点并不能解决问题。

编辑:

tf.keras不能如第一个答案中所述:

enter image description here

2 个答案:

答案 0 :(得分:0)

model.layers.pop()tf.keras中的工作方式与Keras中不同。在tf.keras中,model.layers是模型的视图。您无法删除图层,但可以做的就是定义要为其输出的图层。例如,

base_model = InceptionV3(shape=shape, weights="imagenet", include_top=True)

# you don't want the last five layers:
base_model_output = base_model.layers[-6].output

# new layers
outputs = Dense(....)(base_model_output)
model = Model(base_model.input, outputs)

答案 1 :(得分:0)

由于从输入开始的前几层已更改,因此无法使用预训练的权重。因此,可以直接从此处获取体系结构并进行相应的修改,而无需尝试复杂的手术。

https://github.com/keras-team/keras-applications/blob/master/keras_applications/inception_v3.py