如何使用segnet进行微调

时间:2019-08-31 15:16:24

标签: keras

我正在尝试将SegNet与我自己的班级编号一起使用。因为我只想更改类号,并且想使用权重和几乎所有网络结构,所以我尝试对keras进行微调。

我做到了
1。使用load_model并加载SegNet的结构和权重
2。pop(0)最后一次转换,批处理规范和激活层
3。。我创建了Sequential实例,并放置了旧模型和新的conv,批处理规范和激活层
4。编译新模型

#1 load the model
model = load_model(model_path) 

#2 pop the layers
model.layers.pop() #conv
model.layers.pop() #batch norm
model.layers.pop() #activation

#3 create new model
top_model = Sequential()
top_model.add(Conv2D(new_class_num, (1, 1), padding='same'))
top_model.add(Reshape((imagew * imageh, new_class_num)))
top_model.add(Activation('softmax'))

#4 build the new model
top_model.compile(loss='categorical_crossentropy',optimizer=optimizers.RMSprop(lr=1e-5), metrics=['acc'])

model=Model(inputs=model.input, outputs=top_model(model.output))

top_model.add(Conv2D(new_class_num, (1, 1), padding='same'))代码处,我警告了Input 0 is incompatible with layer conv2d_1: expected ndim=4, found ndim=3错误。 我该如何解决?

0 个答案:

没有答案