Keras 如何从暹罗网络的卷积层中提取特征?

Keras 如何从暹罗网络的卷积层中提取特征?,keras,conv-neural-network,tensor,siamese-network,Keras,Conv Neural Network,Tensor,Siamese Network,我试图从一个经过训练的暹罗网络中提取特征,但我面临一个问题,因为它需要两个输入图像,而输出是一个距离向量 from Keras import backend as K outputs = [layer.get_output_at(-1) for layer in model.layers] # all layer outputs functor = K.function([img_a, img_b]+ [K.learning_phase()], [feat_vecs_a, f

我试图从一个经过训练的暹罗网络中提取特征,但我面临一个问题,因为它需要两个输入图像,而输出是一个距离向量

from Keras import backend as K

outputs = [layer.get_output_at(-1) for layer in model.layers]          # all layer outputs
functor = K.function([img_a, img_b]+ [K.learning_phase()], [feat_vecs_a, feat_vecs_b])
# Testing
test = np.random.random(input_dim)[np.newaxis,...]
layer_outs = functor([im1, im2])
layer_outs

我只得到了距离值,无法找出如何从最终卷积层提取特征。

获取序列模型并从中预测

output_features = original_sequential_model.predict(input_images_as_numpy)
如果您想要“每个”层的输出,则执行您正在执行的操作,但使用顺序模型:

outputs = [layer.output for layer in original_sequential_model.layers]
extractor = Model(original_sequential_model.input, outputs)

output_features = extractor.predict(input_images_as_numpy)
如果您没有原始的顺序模型,则在暹罗网络中:

original_sequential_model = model.get_layer("sequential_1") 
    #or the name that appears in the summary.    

你建议的3个解决方案对我没有帮助,我面临这个问题,第一个是当我执行模型时。预测我只得到一个值,即两幅图像之间的欧几里德距离,我需要的是使用经过训练的模型提取特征。当我写layer.output时,我面临以下错误AttributeError:Layer sequential_1有多个入站节点,因此“Layer output”的概念定义不清。使用
get\u output\u at(节点索引)
。我的模型接受两个输入图像,所以我无法设置图层名称。我可以修复它,请检查!基本模型=模型。获取图层(“输入2”)输入=输入(形状=输入尺寸)x=基本模型(输入)模型自定义=模型(输入,x)im2=np。展开尺寸(x测试[0,1],轴=0)pred1=模型自定义。预测(im2)但我还有一个问题,如何在注册样本图像集时在128d中保存特征?