Как извлечь функцию из слоев свертки в сиамской сети? - PullRequest
1 голос
/ 02 марта 2020

enter image description here Я пытаюсь извлечь объекты из обученной сиамской сети, но я столкнулся с проблемой, поскольку она ожидает два входных изображения, а на выходе - вектор расстояния.

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

Я получаю только значение расстояния и не могу понять, как извлечь элементы из слоя окончательной свертки.

1 Ответ

1 голос
/ 02 марта 2020

Получить последовательную модель и прогнозировать из нее.

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)

Если у вас нет оригинальная последовательная модель, она на сиамском net:

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