我正在研究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)。任何帮助将不胜感激。
答案 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