Как визуализировать промежуточные слои объектов в keras?

Я прочитал статью Цейлера и Фергуса Visualizing and Understanding Convolutional Networks и хотел бы использовать технику их визуализации. Документ звучит многообещающе, но, к сожалению, я понятия не имею, как реализовать его в Keras (версия 1.2.2).

Два вопроса:

  1. Keras предоставляет только слой Deconvolution2D, но не Unpooling и не «обратный слой ReLU». Как я могу использовать эти переменные переключателя, упомянутые в документе, для реализации распаковки? Как мне использовать обратный ReLU (или это просто «нормальный» ReLU)?

  2. Слой Keras Deconvolution2D имеет атрибуты activation и subsample. Может быть, это ключ к решению моей проблемы?! Если да, мне придется заменить всю мою комбинацию слоев Convolution2D + Activation + Pooling одним слоем Deconvolution2D, верно?

Я ценю вашу помощь!


person D.Laupheimer    schedule 07.03.2017    source источник


Ответы (1)


Авторы статьи, которую вы цитируете (насколько я помню), кратко говорят о том, как с этим справиться, в частности:

  1. РеЛУ. Инверсия ReLU - это... ReLU. Поскольку свертка применяется к функции активации в прямом проходе, деконволюция должна применяться к выпрямленным реконструкциям в обратном проходе.
  2. Объединение. Строго говоря, нет способа инвертировать пул. Чтобы процитировать статью, «мы можем получить приблизительное обратное, записав расположение максимумов в каждой области объединения в набор переменных-переключателей. местах, сохраняя структуру стимула».

Теперь, ближе к фактической реализации и Keras, взгляните на эту тему — вы узнаете найдите там несколько примеров, которые вы можете использовать немедленно.

person Lukasz Tracewski    schedule 07.03.2017
comment
Спасибо за Ваш ответ! К сожалению, я до сих пор не понимаю, как реализовать эту статью (я пробовал ваши ссылки, а также пытался использовать Devoncolution2D методом проб и ошибок. Но результаты - это просто полностью красные изображения (colormap = jet)) . Эта статья приведет к отличным визуализациям... - person D.Laupheimer; 10.03.2017
comment
В своем вопросе вы спрашиваете, как это сделать - и я дал ответ. Довольно сложно комментировать, почему все ваши изображения красные - это проблема реализации. Как объяснено, инверсия ReLU -> ReLU, а в предоставленной ссылке есть фрагмент кода для распаковки. - person Lukasz Tracewski; 10.03.2017
comment
Да, я понял. Я использовал ReLU в качестве функции активации в слоях Deconvolution2D. Также я использовал подвыборку для распаковки. Я буду держать его в рабочем состоянии и поделюсь своим решением (если мне это удастся). - person D.Laupheimer; 10.03.2017