python - 使用 Keras 通过 "optimal"输入图像可视化 CNN 生成的特征/内核

标签 python machine-learning tensorflow neural-network keras

所以我一直在做很多关于 CNN 可视化的研究,但我似乎无法找到我想要做的事情的解决方案,或者至少无法找到我对所使用方法的理解的解决方案。其中很多内容都是相当新颖和前沿的,所以我可能无法正确掌握这些概念。

基本上,我想采用由 CNN 训练的学习内核/特征,并本质上制造一个“优化”图片,这样当内核与所述图片进行卷积时,我们可以获得尽可能高的卷积和。

如果我没记错的话,这应该在图像级别而不是过滤器/内核级别夸大该内核的功能,这似乎是大多数人在可视化这些过滤器方面所做的事情。

如果我的问题不清楚,这里有一个例子(可能很糟糕,但它会说明问题。)

假设我们使用 MNIST 并且我创建了一个 CNN,如下所示:

具有 10 个内核/特征图的 5x5 卷积

雷鲁

2x2 MaxPool 2 步

密集+Softmax

假设我已经完全训练了我的模型,现在想要查看它生成的 10 个 5x5 内核之一,并更好地了解它正在寻找什么。我想制作一个新的 28x28 图片,以便与这个 5x5 内核进行卷积时,28x28 卷积的总和最大化。

是否有技术可以做到这样的事情?我觉得我看到的所有内容都涉及“展开”或“反转”神经网络( https://arxiv.org/pdf/1311.2901.pdf ),在图片通过时查看特征图( http://kvfrans.com/visualizing-features-from-a-convolutional-neural-network/ ),或者只是查看内核本身( https://www.youtube.com/watch?v=AgkfIQ4IGaM ) .

它有什么有用的东西可以看吗?我觉得这是我见过的最接近我要求的事情。 https://arxiv.org/pdf/1312.6034.pdf

任何见解都会有很大的帮助,谢谢!

最佳答案

这称为激活最大化,Keras 甚至有一个可用的示例 here 。请注意,帖子中的代码对于当前 Keras 版本可能已过时,但 Keras 的示例文件夹中提供了更新版本。

关于python - 使用 Keras 通过 "optimal"输入图像可视化 CNN 生成的特征/内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43128584/

相关文章:

python - 在以列表为值的字典中查找键(Python)

python - Django : How do i save foreign key object in django rest api class base view

Python:Scrapy CSV 导出不正确?

machine-learning - Scikit-learn - KNeighborsClassifier 的用户定义权重函数

python-2.7 - 如何在 TensorFlow 中混合基于队列和基于提要的输入

python - 什么可能导致无法将 `int` 存储到 `IntField` ?

r - 获取调用对象,更改参数并使用新参数再次运行

python - 预期 4D 张量作为输入,但得到 2D 张量

linux - Tensorflow 对象检测训练作业在谷歌云上失败

tensorflow - 将 tensorflow 数据集记录分成多条记录