как извлечь объект из сверточных слоев в сиамской сети?

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

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 ответ

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

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.    
Другие вопросы по тегам