Keras 暹罗网络,如何抽象特征?

Keras 暹罗网络,如何抽象特征?,keras,conv-neural-network,keras-layer,Keras,Conv Neural Network,Keras Layer,我试图修改示例以获得图像特征 问题是,如何获取图像特征?最后一层的输出只是一个数字。在获得特征之前,我应该做些什么?您可以尝试首先在整个数据集上训练模型并保存它 再次加载模型,现在将输出层设置为processed\u a和processed\u b 现在再次对整个数据集调用model.predict()函数,您将获得数据集中每个图像的特征 看看 希望这有帮助 要在培训后从示例中获取嵌入: model_a = Model(inputs=model.input, outputs=processed_

我试图修改示例以获得图像特征


问题是,如何获取图像特征?最后一层的输出只是一个数字。在获得特征之前,我应该做些什么?

您可以尝试首先在整个数据集上训练模型并保存它

再次加载模型,现在将输出层设置为
processed\u a
processed\u b

现在再次对整个数据集调用
model.predict()
函数,您将获得数据集中每个图像的特征

看看


希望这有帮助

要在培训后从示例中获取嵌入:

model_a = Model(inputs=model.input, outputs=processed_a)
model_a.predict([tr_pairs[:, 0], tr_pairs[:, 1]])
我是这样做的():

我训练有素的暹罗模特是这样的:
siamese\u model.summary()

请注意我新定义的模型与以黄色突出显示的模型基本相同

然后我重新定义了我想要用于提取嵌入的模型(它应该是您定义的同一个模型,但现在它不会有像暹罗这样的多个输入),如下所示:

暹罗嵌入模型=构建暹罗模型(输入形状)

siamese\u embeddings\u model.summary()

然后我从我训练过的暹罗模型中提取权重,并将它们设置到我的新模型中

embeddings\u weights=暹罗模型。层[-3]。获取权重()

暹罗嵌入模型。设置权重(嵌入权重)

然后,您可以提供新图像以从新模型中提取嵌入

vector=siamese.predict(图像)


len(向量[0])
它将打印150,因为我的精细致密层(是输出向量)

我面临以下错误!Graph disconnected:无法获取“input_69”层的张量张量值(“input_69:0”,shape=(?,1,80,80),dtype=float32)。访问以下以前的层时没有问题:[]我在下面得到错误|值错误:图形断开连接:无法获取层“input_2”处的张量张量值(“input_2:0”,shape=(?,1,80,80),dtype=float32)。访问以下以前的层时没有问题:[]