将Keras图层从一个模型复制到另一个模型时更改input_shape

时间:2017-04-19 17:36:27

标签: keras

我有一个我训练过的简单的单层CNN网络。我现在想使用没有顶部的这个模型来可视化CNN过滤器,如Keras.io博客文章here中所示。

这是我的简单模型:

model = Sequential()
model.add(Conv2D(24, (5, 5), padding='valid',input_shape=(1, 17,17), activation='relu',name='conv2d_1'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.5))
model.add(Flatten())
model.add(Dense(8, activation='relu',name='dens_1'))
model.add(Dense(2, activation='softmax',name='dens_2'))

我想使用load_model加载模型,然后使用通用输入大小(1, None,None)创建一个无顶模型,例如下面所示的模型。这可能吗?我更喜欢不必明确地重新定义模型中的所有图层。

model_no_top = Sequential()
model_no_top.add(Conv2D(24, (5, 5), padding='valid',input_shape=(1, None, None), activation='relu',name='conv2d_1'))
model_no_top.add(MaxPooling2D(pool_size=(2, 2)))
model_no_top.add(Dropout(0.5))

我已加载模型并抓取了我想要的图层,但input_shape与原始模型相同。

model = load_model(model_path)
model_no_top = Sequential()
for layer in model.layers:
    if 'flatten' not in layer.name and 'dens' not in layer.name:
        model_no_top.add(layer)

0 个答案:

没有答案