【发布时间】:2019-07-24 09:20:46
【问题描述】:
我有 8 个 CNN 模型 model1, model2, model3, model4, model5, model6, model7, model8,每个模型都带有 conv2d、激活、最大池化和 dropout 层。我想将它们的输出连接起来,将其展平,最后编译并使其适合分类目的,如下图:
我对连接、合并和拟合感到困惑。例如,我可以使用 model1.add(Flatten) 单独展平每个模型,然后将它们连接起来,还是我必须连接并展平所有模型?我的python代码如下:
merge = Concatenate([model1, model2, model3, model4, model5, model6, model7, model8])
concat_model = Sequential()
concat_model.add(merge)
concat_model.add(Flatten())
concat_model.add(Dense(128))
concat_model.add(Activation("relu"))
concat_model.add(BatchNormalization())
concat_model.add(Dropout(0.5))
concat_model.add(Dense(classes))
concat_model.add(Activation("softmax"))
concat_model.compile(loss="categorical_crossentropy", optimizer= opt, metrics=["accuracy"])
concat_model.fit_generator(aug.flow(trainX, trainY, batch_size=BS),validation_data=(testX, testY), steps_per_epoch=len(trainX) // BS, epochs=EPOCHS, verbose=1)
当我运行程序时,我收到以下错误:
RuntimeError: You must compile your model before using it.
有什么问题?我怎样才能连接,编译,训练?任何人都可以帮助我,任何信息都会有所帮助。
【问题讨论】:
标签: keras deep-learning concatenation conv-neural-network