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