在卷积神经网络中可视化 3D 滤波器的经典方法是什么?

数据挖掘 深度学习 可视化
2021-10-01 23:51:10

假设在 CNN 中的 N 层,我的“图像”是一个 200×200×10 的数组。因此,如果我将这样一个数组与例如 15 个大小为 3×3×10 的过滤器进行卷积,我将得到一个形状为 A×B×15 其中AB 取决于卷积的步幅。N within a CNN, my "image" is a 200×200×10 array. Thus, if I convolve such an array with, for example, 15 filters of size 3×3×10, I will end up with a new "image" whose shape is A×B×15 where A and B depend on the stride of the convolution.

因此,我想知道这样的 3D(在我的玩具示例中为 3×3×10)卷积滤波器通常如何显示为 2D 图像(即总和或平均值,...)?×3×10 in my toy example) convolution filters are usually displayed as 2D images (i.e. sum or mean, ...)?

2个回答

对于 CNN,一种常见的策略是可视化权重。它们通常在直接查看原始像素数据的第一个 CONV 层上最容易解释,但也可以在网络更深处显示过滤器权重。

如果您想查看激活图,则必须将它们 1 逐 1 显示,并且它们将是灰度的(例如,您将为 N 层显示 15 个 AxB 灰度过滤器)。查看此站点以获取更多想法:http ://cs231n.github.io/understanding-cnn/

话虽如此,目前还不清楚在查看 200*200*10 立方体的图层上可以“看到”什么,以及之后可以采取什么行动。

编辑-附加链接本文描述了一种新技术,该技术试图显示神经网络层中包含的“意义”:https ://distill.pub/2018/building-blocks/ “例如,通过结合特征可视化(什么是寻找一个神经元?)与归因(它如何影响输出?),我们可以探索网络如何在拉布拉多猎犬和虎猫等标签之间做出决定。”

因此,我想知道这种 3D(在我的玩具示例中为 3×3×10)卷积滤波器通常如何显示为 2D 图像(即总和或均值,...)?

TL;DR 3x3x10 图像显示为 10 个 3x3 图像

更长的版本

假设您从 32x32x3 图像开始

您决定使用输出深度为 15 的形状为 5x5x3 的过滤器(没有填充和步幅 1)。即,您会将 32x32x3 图像转换为 28x28x15 图像。这个 15 的深度到底意味着什么?15 个维度中的每一个都代表一个过滤器输出。

即,当我们为 5x5x3 过滤器应用 15 的输出深度时,我们采用 15 个 5x5x3 过滤器并将它们应用于图像。从他们那里,我们得到 15 张 28x28x1 的图像。

这 15 个 $28$$\times$$28$$\times$$1$ 图像中的每一个都堆叠在一起以形成 28x28x15 图像。28×28×1 images are stacked on top of each other to make a 28x28x15 image.

所以,回答你的问题:$N$$\times$$N$$\times$$15$ 图像被分成 15 个 NxNX1 图像并显示。N×N×15 images are split into 15 NxNX1 images and displayed.

注意:您会在许多 CNN 可视化中注意到,随着卷积金字塔深度的增加,小图像的数量也会增加。