Визуализация фильтра conv в Keras: почему некоторые фильтры застревают при потере == 0 и как я могу предотвратить это? - PullRequest
4 голосов
/ 15 января 2020

Я использую этот сценарий из Keras-Team для визуализации конв-фильтров модели VGG16:

https://github.com/keras-team/keras/blob/master/examples/conv_filter_visualization.py

Для большинства фильтров это работает. Однако, если я попытаюсь сгенерировать изображение для фильтра 11 в слое «block5_conv1», алгоритм не выдаст вывод, потому что «некоторые фильтры застревают в 0» (строка 156 и далее):

# some filters get stuck to 0, we can skip them
if loss_value <= K.epsilon():
    return None

Это это единственное, что я изменил в скрипте (последняя строка):

visualize_layer(vgg, "block5_conv1", output_dim=(112, 112), filter_range=(11, 12))

Повторное выполнение одного и того же кода пару раз, наконец, привело к изображению (я думаю, потому что случайно сгенерированное начальное изображение изменилось):

Filter 11 in block5_conv1

Однако, для многих других фильтров, например block5_conv3, filter 1, мне не повезло:

visualize_layer(vgg, block5_conv3, output_dim=(112, 112), filter_range=(1, 2))

Я также изменил output_dim, step, epochs, upscaling_steps, upscaling_factor, но не смог создать изображение.

Поэтому мой вопрос: есть ли способ надежно сгенерировать визуализацию каждого фильтра (на основе по предоставленному сценарию)?

...