J'essaye de retirer les couches supérieures d'un modèle que j'ai déjà formé. Ce est le code que j'utilise:L'utilisation de model.pop() modifie le résumé du modèle mais n'affecte pas la sortie.
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()
A en juger en comparant les résultats des deux appels à model.summary(), je peux voir que les 6 effet couches supérieures ont été retirées. Cependant, la sortie du modèle (enregistrée en A et B) ne change pas après avoir ignoré ces couches.
Quelle est la source de cet écart? Comment puis-je récupérer la sortie du calque désiré au lieu de celui du modèle entier?
Merci d'avance!