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

问题描述 投票:0回答:1

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

keras conv-neural-network
1个回答
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等其他类型的可视化。

© www.soinside.com 2019 - 2024. All rights reserved.