keras - 在每一层可视化 Keras CNN 最终训练的过滤器
问题描述
有人问了同样的问题:在 keras cnn 中可视化学习的过滤器。但它没有答案,所以我又问了一遍。我知道 Keras 在每一层都有默认过滤器,然后对其进行修改和调整。在所有修改之后,我想看看这些过滤器(32 或 64 或任何数字)的外观。我知道当预测新图像发生时,这些过滤器会被一一应用来预测图像。但是这些经过训练的过滤器看起来如何?我浏览了几个标题为“可视化 keras 过滤器”的博客和帖子。但我不知道如何在我的情况下应用它们。我已经训练了一个 keras CNN 模型并将其保存到 .hdf5 文件中。请帮忙!。我想查看每一层的所有过滤器。
解决方案
这很容易做到:
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。
推荐阅读
- c++ - C++20 keys_view 和 values_view 的真正目的是什么?
- java - 如何拥有一个具有自定义文件扩展名的数据库,当双击文件时,该数据库会自动打开并且仅使用我的 java 程序
- apache - apache 服务器未在 xampp 上启动
- angular - 如何转换 Observable
反对T级? - linker - 如何调试“无法打开共享对象文件:没有这样的文件或目录”?
- gnuplot - 无法更改 gnuplot 中许多数据列的点颜色
- python - 样条曲线形状的抗锯齿图像
- google-chrome - 在 Chrome 中禁用声音
- reactjs - 有条件地渲染组件时如何防止 UI 闪烁?
- firebase - 在 dart/flutter 中执行多次从 firestore 获取数据的异步函数