我尝试在keras上实现U-NET,这很好(我从https://github.com/zhixuhao/unet获得了代码)并对其进行了一些修改。
我想做的是让三个不同的U-NET具有不同的输入大小。例如256x256、128x128和64x64。
然后将每个图像馈送到不同的U-NET。在最后一层中,我想将包含要素的最后一层展平,并将它们全部合并以进行分类。
这就是我所做的
#first u-net
#final layer
flatten = Flatten()(conv9)
Dense1 = Dense(512, activation='relu')(flatten)
BN = BatchNormalization()(Dense1)
Dense2 = Dense(2, activation='sigmoid')(BN)
model = Model(input=inputs, output=Dense2)
#second u-net
#final layer
flattenx = Flatten()(conv9x)
Dense1x = Dense(512, activation='relu')(flattenx)
BNx = BatchNormalization()(Dense1x)
Dense2x = Dense(2, activation='sigmoid')(BNx)
model2 = Model(input=inputs2, output=Dense2x)
#third u-net
#last layer
flattenxy = Flatten()(conv9xy)
Dense1xy = Dense(512, activation='relu')(flattenxy)
BNxy = BatchNormalization()(Dense1xy)
Dense2xy = Dense(2, activation='sigmoid')(BNxy)
model3 = Model(input=inputs3, output=Dense2xy)
#concat
concat_all = Concatenate()([flatten, flattenx, flattenxy])
flat_i1 = Flatten()(inputs)
flat_i2 = Flatten()(inputs2)
flat_i3 = Flatten()(inputs3)
model_all = Model(inputs=[flat_i1, flat_i2, flat_i3], outputs=concat_all)
model_all.compile(optimizer=Adam(lr=1e-4), loss='binary_crossentropy',
metrics=['accuracy'])
此实现不正确,在某处不正确,但是如果有人可以帮助我纠正实现,我将不胜感激。预先感谢!