Визуализация финальных обученных фильтров Keras CNN на каждом слое - PullRequest
0 голосов
/ 02 марта 2019

кто-то задавал тот же вопрос: визуализируйте изученные фильтры в керасе cnn .Но у него нет ответов, поэтому я снова спросил.Я знаю, что Keras имеет фильтры по умолчанию на каждом слое, которые затем модифицируются и корректируются.После всех модификаций я хочу посмотреть, как выглядят эти фильтры (32 или 64 или любое число).Я знаю, что когда происходит прогнозирование нового изображения, эти фильтры применяются один за другим для прогнозирования изображения.Но как выглядят эти ОБУЧЕННЫЕ фильтры?Я просмотрел несколько блогов и постов с заголовками «Визуализировать фильтры keras» или около того.Но я не знаю, как применять их в моем случае.Я обучил модель keras CNN и сохранил ее в файл .hdf5.Пожалуйста помоги!.Я хочу видеть все фильтры на каждом слое.

1 Ответ

0 голосов
/ 02 марта 2019

Это довольно легко сделать:

import numpy as np
model = load_model('your_model.hdf5')

#Select a convolutional layer
layer = model.layers[1]

#Get weights
kernels, biases = layer.get_weights()

#Normalize kernels into [0, 1] range for proper visualization
kernels = (kernels - np.min(kernels, axis=3)) / (np.max(kernels, axis=3) - np.min(kernels, axis=3))

#Weights are usually (width, height, channels, num_filters)
#Save weight images
import cv2

for i in range(kernels.shape[3]):
    filter = kernels[:, :, :, i]
    cv2.imwrite('filter-{}.png'.format(i), filter)

С этим кодом вы получите кучу файлов PNG, по одному на каждый фильтр.Вы можете делать другие виды визуализаций, например, используя matplotlib.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...