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