在Keras的密集层之前添加分类特征?

时间:2017-07-25 21:33:19

标签: python merge keras

我正在研究CNN模型,并希望在Dense图层之前添加新的分类功能。我试图将该功能连接到CNN层的扁平输出,但看起来像Keras中的连接函数需要输入张量而不是数组。我该怎么办呢?这是我到目前为止尝试过的代码:

model = Sequential()
model.add(Conv2D(128, (6, 6), padding='same'))
model.add(Activation('relu'))
model.add(Conv2D(128, (6, 6)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())

我正在尝试使用Concatenate函数,但它可以加入张量,因为我的特征是一个numpy数组形状(1,3)。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您应该在实际模型的一侧创建一个新模型。 第二个模型将输入你的numpy数组,不做任何其他事情。

然后你连接它们。

喜欢这个 - >

m1 = Sequential()
m1.add(Conv2D(128, (6, 6), padding='same'))
m1.add(Activation('relu'))
m1.add(Conv2D(128, (6, 6)))
m1.add(Activation('relu'))
m1.add(MaxPooling2D(pool_size=(2, 2)))
m1.add(Dropout(0.25))
m1.add(Flatten())

m2 = Sequential()
m2.add(Input()) # Put needed infos to input your numpy array
#Don't forget to flatten it if needed ?

model = Sequential()
model.add(Merge([m1,m2], mode='concat'))
#Then add your final layer.
#To train it, in place of the normal var X_train, you'll use [X_train,yournumpyarray] in model.train method