CNN 中张量的意义何在?为什么不简单地将数据重塑为矩阵?

数据挖掘 深度学习 卷积神经网络 卷积
2021-10-03 05:14:02

取以下张量:

[abcdefghi]
[jklonmpqr]

其中每个矩阵代表一个通道。

这可以很容易地重塑为向量:

[a,d,g,b,e,h,c,f,i,j,o,p,k,n,q,l,m,r]

然后与其他向量化张量逐行连接,形成一个典型的平面文件数据集 N×P, 在哪里 N 是训练样本的数量和 P 是张量维度的乘积。

与其使用卷积层,不如简单地将权重在后续层中约束为零。

如果 X 是一个单位 N×P 连接向量化张量的数据集,然后卷积权重将形成一个稀疏矩阵,前两列 P×4 卷积“层”是 2×2×2 过滤器存在

[w0w000wwww000w0w00w0w000wwww0w0w0w00]

在我看来,这比张量公式更直观,并且可以使用稀疏矩阵包相当简单地计算。也许部分是品味问题。但我很好奇:张量范式有什么特别之处——无论是在数学上还是在计算上——优于扁平表示?我知道计算机将矩阵代数转换为“在引擎盖下”的 for 循环,但是 GPU 的出现不是使这种显式循环变得无关紧要吗?

1个回答

张量在卷积网络中非常自然。

  • 本地像素信息很重要:如果e是上面示例中的一个像素,重要的是要知道a通过i是它的邻居。当您将图像重塑为矢量时,此信息会丢失。看看卷积层是如何工作的。

转换层

  • 训练通常分批进行,就神经网络而言,这是另一个维度。您不想将不同的图像混合到一个矩阵中,它们是完全独立的。

  • 最后是深度通道。最初它是输入图像的 R、G、B 通道之一,然后每个通道对应于应用于前一个 conv 层的过滤器。再一次,过滤器是独立的,在最后一层之前混合它们是没有意义的。

因此,总共有 4 秩张量通过卷积网络。它不仅更直观(每个维度都有含义),而且准确性更高,因为它利用了图像中所有有意义的信息。