首页 > 解决方案 > 在每一层可视化 Keras CNN 最终训练的过滤器

问题描述

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

标签: kerasconv-neural-network

解决方案


这很容易做到:

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。


推荐阅读