Мне нужно использовать предварительно обученную модель в Keras (keras.applications.VGG16) в качестве основы для создания другой модели (для выполнения трансферного обучения) из ее первых слоев. Конечная цель - заморозить и экспортировать модель для развертывания на Raspberry Pi с помощью AIY Vision Kit.
Я пробовал общий подход:
model_base = keras.applications.VGG16(input_tensor=inputs)
x = model_base.get_layer(backbone_layer).output
x = keras.layers.Flatten()(x)
x = keras.layers.Dense(1)(x)
model = keras.models.Model(inputs=inputs, outputs=x)
Я также пытаюсь использовать:
model_base._layers.pop()
Я вызываю pop () n раз, где «n» - это количество последних слоев, от которых я хочу избавиться.
И, похоже, это работает в обоих случаях , когда я использую new_model.summary (), он показывает только желаемые первые слои модели VGG16 плюс новые слои, добавленные для настройки, однако при экспорте модели и ее компиляции для tf-lite компилятор возвращает:
Недостаточно памяти на устройстве для запуска модели
Что странно, так как полученная модель даже меньше (файл .pb и количество слоев), чем другие модели, определенные вручную, которые могут быть правильно импортировано, после анализа тензорной доски и экспорта файла .pb в виде текста я обнаружил, что исходная модель тоже экспортируется (все слои, даже те, которые не используются и удаляются с помощью pop ()), а не только новый * 1 017 *
(как видно на тензорной доске, есть 2 параллельные модели, справа желаемая, но исходные слои исходной модели по-прежнему отображаются слева, также эта часть исходной модели присутствует в экспортированной .pb файл)
введите описание изображения здесь
У меня вопрос, как я могу точно удалить неиспользуемые слои из модели keras.applications.VGG16 и просто сохранить первые слои + новые пользовательские слои? использование pop () не сработало, также безуспешно пробовал слой del (для l oop).
Или какие другие альтернативы у меня есть, чтобы использовать предварительно обученную модель в качестве базовой, сохраняя только это первые слои, а затем соединение с некоторыми другими пользовательскими слоями.