我想将简单分类器的结果与卷积网络的结果混合,以获得更复杂的分类器并进行测试。
现在,我正在使用Inceptionv3 net的keras示例
base_model = InceptionV3(include_top=False, weights='imagenet',
input_shape=(200,200,3))
x = base_model.output
x = GlobalAveragePooling2D()(x)
x = Dense(1024, activation = 'relu')(x)
predictions = Dense(NUM_CLASSES, activation='softmax')(x)
model = Model(inputs=base_model.input, outputs=predictions)
我想将从其他分类器获得的类添加到第一个Dense
图层的结果中,但不了解如何将其发送到模型。
感谢。
答案 0 :(得分:0)
你需要一个有两个分支的模型。
input1 = Input(yourInputShape)
按照相同的行,直到您要更改结果密集:
v3out = base_model(input1)
v3out = GlobalAveragePooling2D()(v3out)
v3out = Dense(1024, activation = 'relu')(v3out)
对其他分类器有类似的构造:
otherOut = other_model(input1)
otherOut = MoreLayers(....)(otherOut)
现在你可以将它们相加,如果它们具有相同的形状,或者将它们连接起来(将一个附加到另一个的末尾)
#sum
joined = Add()([v3Out,otherOut])
#or concatenate
joined = Concatenate()([v3Out,otherOut])
正常完成模型:
predictions = Dense(NUM_CLASSES, activation='softmax')(joined)
model = Model(inputs=input, outputs=predictions)