Keras 使用model.pop()更改模型';s摘要,但不影响输出
我正在尝试从我以前训练过的模型中删除顶层。 这是我使用的代码:Keras 使用model.pop()更改模型';s摘要,但不影响输出,keras,keras-layer,Keras,Keras Layer,我正在尝试从我以前训练过的模型中删除顶层。 这是我使用的代码: 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.layer
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)在丢弃这些图层后不会更改
这种差异的根源是什么?
如何检索所需图层的输出,而不是整个模型的输出
提前谢谢 您不能像那样删除层,为了使其产生效果,您需要重新编译模型(AKA model.compile)
但这不是从中间层获得输出的最佳方法,您可以使用K.function(其中K是keras.backend)从输入层构建一个函数,然后调用该函数。答案中提供了更多详细信息。您不能像这样删除层,为了使其产生效果,您需要重新编译模型(AKA model.compile) 但这不是从中间层获得输出的最佳方法,您可以使用K.function(其中K是keras.backend)从输入层构建一个函数,然后调用该函数。答案中有更多细节