Я пытаюсь удалить верхние слои из модели, которую я предварительно обучил. Это код, я использую:Использование model.pop() изменяет сводку модели, но не влияет на результат
import os
import h5py
import numpy as np
from keras.preprocessing.image import ImageDataGenerator
from keras.models import Sequential
from keras.layers import Convolution2D, MaxPooling2D, ZeroPadding2D
from keras.layers import Activation, Dropout, Flatten, Dense
# KERAS_BACKEND=theano python
import keras
keras.backend.set_image_dim_ordering("th")
img_width, img_height = 150, 150
data_dir = '//shared_directory/projects/try_CD/data/validation'
nb_train_samples = 2000
nb_validation_samples = 800
nb_epoch = 50
def make_bottleneck_features(model):
datagen = ImageDataGenerator(rescale=1./255)
generator = datagen.flow_from_directory(
data_dir,
target_size=(img_width, img_height),
batch_size=32,
class_mode=None,
shuffle=False)
bottleneck_features = model.predict_generator(generator, nb_validation_samples)
return (bottleneck_features)
model=keras.models.load_model('/shared_directory/projects/think_exp/CD_M1.h5')
A = make_bottleneck_features(model)
model.summary()
for i in range (6):
model.pop()
B = make_bottleneck_features(model)
model.summary()
Судя сравнивая результаты двух вызовов model.summary(), я могу видеть, что на самом деле в 6 самых верхних слоях были удалены.
Однако выход модели (сохраненный в A и B) не изменяется после отбрасывания этих слоев.
Что является источником этого несоответствия? Как я могу получить вывод нужного слоя, а не всего всей модели?
Заранее благодарен!