首页 > 解决方案 > 3d 内核和 3d 图像(说 RGB)的矩阵乘法究竟是如何发生的以提供 2d 输出?

问题描述

我一直在研究卷积神经网络架构。我对此感到非常困惑,3d 内核作用于 3d 输入图像(好吧,它是 4d,因为我们有这些图像的堆栈,但只是为了让解释更容易一些)。我知道互联网上到处都是这样的东西。但我找不到那个矩阵乘法部分的确切答案。

为了让大家更容易理解,有人可以告诉我一个关于(5,5,3)矩阵(我们的内核)如何在(28,28,3)矩阵(我们的RGB图像)上发生卷积的实际乘法,输出一个二维数组。

此外,还请展示(带有详细图片),这些众多的 2d 阵列是如何变平并连接到单个全连接层的。

我知道,池化二维数组的最后一层是展平的。但是,由于有 64 个二维数组(只需考虑一下),.. 所以即使我们将每个数组展平,我们也会有 64 个展平的一维数组。那么,这最终如何连接到下一个全连接层?(请上图)

标签: pythonarraysmatrixconv-neural-networkconvolution

解决方案


您有多个问题合二为一。我将回答关于“卷积如何发生”的问题。简短的回答:它不是矩阵乘法。

步骤 1) 在 RGB 图像上滑动一个大小为 (5,5,3) 的窗口,雕刻出该大小的子图像。顺便说一下,这些子图像的维度与内核的维度完全相同。

第 2 步)您将每个子图像值与卷积分量的值相乘。其输出再次是 (5,5,3) 子图像由内核的值“缩放”。

第 3 步)您将“缩放”(5,5,3)子图像的所有值加在一起(有效地压缩尺寸)成一个值——这是我们的最终输出。


推荐阅读