Как удалить (вытолкнуть) начальные слои предварительно обученной модели Keras InceptionV3? - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь использовать предварительно обученную модель InceptionV3.Однако я хочу удалить первые пять слоев и добавить свои собственные слои.Как я могу это сделать?Я пытался model.layers.pop(0), но это само по себе не решит проблему.

Редактировать:

tf.keras тоже не помогает, как упоминалось в первом ответе:

enter image description here

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

Так как первые несколько слоев, начиная с ввода, изменены, то предварительно подготовленные веса не могут быть использованы. Таким образом, архитектура может быть непосредственно взята отсюда и изменена соответствующим образом вместо того, чтобы выполнять сложные операции.

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

0 голосов
/ 03 мая 2019

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