как извлечь объект из сверточных слоев в сиамской сети?
Я пытаюсь извлечь функции из обученной сиамской сети, но сталкиваюсь с проблемой, поскольку она ожидает два входных изображения, а на выходе - вектор расстояния.
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.