如果输入不同,您可以在 Keras 中执行此操作并且是有意义的。要在 keras 中这样做,首先需要一个多输入模型,并且必须将卷积层的输出连接在一起。
input_1= Input(shape=(x,y), name='input_1')
input_2= Input(shape=(x,y), name='input_1')
c1 = Conv2D(filter_size, kernel_size))(input_1)
p1 = MaxPooling2D(pool_size=(2, 2)(input_1)
f1 = Flatten()(p1)
c2 = Conv2D(filter_size, kernel_size))(input_2)
p2 = MaxPooling2D(pool_size=(2, 2)(c2)
f2 = Flatten()(p2)
x = concatenate([f1, f2])
x = Dense(num_classes, activation='sigmoid')(x)
model = Model(inputs=[input_1, input_2], outputs=[x])
model.compile('adam', 'binary_crossentropy', metrics=['accuracy'])
根据您的数据,也可以共享卷积层,因此您只需定义一次 dem 并重用它们。在这种情况下,权重是共享的。
conv = Conv2D(filter_size, kernel_size))
pooling = MaxPooling2D(pool_size=(2, 2)
flatten = Flatten()
f1 = flatten(pooling(conv(input_1)))
f2 = flatten(pooling(conv(input_2)))