在每一层可视化Keras CNN最终训练的过滤器

时间:2019-03-02 14:18:05

标签: keras conv-neural-network

有人问同样的问题:visualize learned filters in keras cnn。但是它没有答案,所以我又问了一次。 我知道Keras在每一层都有默认的滤镜,然后对其进行修改和调整。进行所有修改之后,我想看看这些过滤器(32或64或任何数字)的外观。我知道,当发生新图像的预测时,这些过滤器将一一应用以预测图像。但是这些经过训练的过滤器看起来如何?我浏览了多个博客和帖子,标题为“ Visualise keras过滤器”左右。但是我不知道如何在我的情况下应用它们。我已经训练了一个keras CNN模型并将其保存到.hdf5文件。请帮忙!。我想查看每一层的所有过滤器。

1 个答案:

答案 0 :(得分:0)

这很容易做到:

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。

相关问题