我有一个经过预先训练的网络,包括两个部分,特征提取和相似学习。
网络采用两个输入,预测图像是否相同。
特征提取部分为VGGNet 16,所有层均冷冻。
我只提取特征向量,学习由两个卷积层和四个稠密层组成的相似网络。

注意:由于尺寸大,从图像中移除了最后几层。
现在,我想微调VGGNet的最后一个卷积块,并希望对每种类型的图像使用两个不同的VGGNet特征提取器。
我已经加载了经过训练的模型,并创建了一个从Merged_feature_map层开始的新模型:
model = Sequential()
for layer in ft_model.layers[3:]:
model.add(layer)现在,新模型将只包含相似度网络,而不包含特征提取部分。
我已经为每种类型的图像加载了两个VGGNets,并将它们的最后一个卷积块解冻如下:
vgg_left = VGG16(weights="imagenet", include_top=False, input_tensor=Input(shape=(img_width, img_height, channels)))
vgg_left.name = "vgg_left"
vgg_right = VGG16(weights="imagenet", include_top=False, input_tensor=Input(shape=(img_width, img_height, channels)))
vgg_right.name = "vgg_right"在那一刻,我有三个模型,我想把它们结合起来。两个VGG网络的输出应该是合并特征映射的输入。如何将它们结合起来,使它们成为一个单一的模型。
bottleneck_features_r = vgg_left(left_input)
bottleneck_features_s = vgg_right(right_input)它应该是:

发布于 2020-02-21 07:32:25
您可以使用model.output或get_layer获得模型的输出,用tf.keras.layers.concatenate获取把它们结合起来的输出。
https://datascience.stackexchange.com/questions/68388
复制相似问题