我正在训练CNN来比较两张图片。然后CNN可以说我在CNN上发布的新图片是否相等。因此,我通过cv2连接图像,这样我就有了形状(330530,6)(rgb)的图像,或者类似于灰度(330530,2)的图像。 这对我来说很好,但我想知道CNN是如何工作的,如果我在展平两个模型后连接两个模型。我正在使用keras序列模型。有没有一种方法可以连接这两个模型而不改变一切?因为我用拟合方法给出数据,所以我不确定如何将这两个数据交给每个模型
以下是我使用的模型:
CNN = Sequential()
CNN.add(layers.Conv2D(32,(3,3),activation='relu',kernel_regularizer=regularizers.l2(l2Reg),input_shape=(330,530,2)))
CNN.add(layers.MaxPool2D(pool_size=(2, 2)))
CNN.add(layers.Conv2D(32,(3,3),activation='relu',kernel_regularizer=regularizers.l2(l2Reg)))
CNN.add(layers.MaxPool2D(pool_size=(3, 3)))
CNN.add(layers.Conv2D(64,(3,3),activation='relu',kernel_regularizer=regularizers.l2(l2Reg)))
CNN.add(layers.MaxPool2D(pool_size=(3, 3)))
CNN.add(layers.Conv2D(64,(3,3),activation='relu',kernel_regularizer=regularizers.l2(l2Reg)))
CNN.add(layers.MaxPool2D(pool_size=(3, 3)))
CNN.add(layers.Flatten())
CNN.add(layers.Dropout(0.5))
CNN.add(layers.Dense(128,activation='relu',kernel_regularizer=regularizers.l2(l2Reg)))
CNN.add(layers.Dense(2,activation='softmax'))
CNN.summary()
CNN.compile(optimizer=optimizers.RMSprop(lr=1e-4),loss='categorical_crossentropy',metrics=['accuracy'])
history=CNN.fit(XTrain,YTrain,epochs=40,batch_size=32,validation_split=0.15)
scores = CNN.evaluate(XTest,YTest,batch_size=32)
print("Accuracy: %.2f%%" % (scores[1]*100))
CNN.save("AnodenerkennungDreiV")
您可以创建一个输入列表,在您的例子中有两个项目,比如说'image1'和'image2'。然后,您可以为每个以展平层结尾的图像创建卷积层和池层的分支
灰度为330x530的图像示例:
要将数据馈送到此模型中,您需要一个字典作为X值
X['image1']
应包含所有第一个图像和X['image2']
所有第二个图像。您应该仍然能够使用相同的y值下图显示了示例模型的架构:
我希望我正确理解了你的问题,这就是你要找的
相关问题 更多 >
编程相关推荐