Как я могу получить результат промежуточного слоя (извлечение признаков)? - PullRequest
0 голосов
/ 07 августа 2020

Я хочу извлечь особенности оптического изображения и сохранить их в массив numpy. Я встречал похожие вопросы, их также можно увидеть здесь: https://keras.io/getting_started/faq/#how -can-i-get-the-output-of-an-intermediate-layer-feature-extract , но не знаю как go об этом.

1 Ответ

1 голос
/ 07 августа 2020

В документации Keras точно указано, как это сделать. Если вы определили свою модель model_full, вы можете создать другую, которая является лишь ее частью - от входного уровня до интересующего вас.

model_part = Model(
  inputs=model_full.input,
  outputs=model_full.get_layer("intermed_layer").output)

Тогда вы должны быть возможность получить вывод с промежуточного уровня, используя:

intermed_output = model_part(data)

Для этого вам просто нужно определить model_full, который, я полагаю, у вас уже есть.

2-й подход

Вы также можете использовать встроенную функцию Keras, которую, я думаю, вы уже видели в документации. Поначалу это может показаться сложным, но это просто создание функции со связанными значениями, т.е.

from keras import backend as K

get_3rd_layer_output = K.function(
  [model.layers[0].input], # param 1 will be treated as layer[0].output
  [model.layers[3].output]) # and this function will return output from 3rd layer

# here X is param 1 (input) and the function returns output from layers[3]
output = get_3rd_layer_output([X])[0]

Очевидно, что снова нужно определить model. Не уверен, есть ли какие-то другие требования помимо этого.

...