在卷积神经网络 (CNN) 中,当对图像进行卷积时,操作是使用点积还是元素乘法之和?

数据挖掘 深度学习 神经网络 美国有线电视新闻网 卷积神经网络 图像识别
2021-10-01 20:02:22

下面的示例取自deeplearning.ai中的讲座,显示结果是逐元素乘积的总和(或“逐元素乘法”。红色数字表示过滤器中的权重:

(11)+(10)+(11)+(00)+(11)+(10)+(01)+(00)+(11)=1+0+1+0+1+0+0+0+1=4

在此处输入图像描述

但是,大多数资源都说它是使用的点积

“……我们可以将神经元的输出重新表示为 ,其中是偏置项。换句话说,我们可以通过 y=f(x*w) 计算输出,其中 b 是偏置项。换句话说,我们可以通过执行输入和权重向量的点积,添加偏置项来产生 logit,然后应用变换函数来计算输出。”

布杜马,尼基尔;洛卡西奥,尼古拉斯。深度学习的基础知识:设计下一代机器智能算法(第 8 页)。奥莱利媒体。Kindle版。

“我们采用 5 5 3 过滤器并将其滑过整个图像,并在此过程中采用过滤器和输入图像块之间的点积。对于所拍摄的每个点积,结果都是一个标量。”

网上对卷积神经网络的最好解释!

“每个神经元接收一些输入,执行点积,并可选择非线性地跟随它。”

CS231n 用于视觉识别的卷积神经网络

“卷积的结果现在相当于执行一个大型矩阵乘法 np.dot(W_row, X_col),它评估每个过滤器和每个感受野位置之间的点积。”

CS231n 用于视觉识别的卷积神经网络

但是,当我研究如何计算矩阵的点积时,似乎点积与逐个元素的乘法求和不同。实际使用了什么运算(逐个元素乘法或点积?),主要区别是什么?

2个回答

卷积可以写为

I(x,y)=i=0nj=0mk(i,j)I(x+i,y+j)

内核在哪里k是大小n经过m. 图片是大小N经过M. 好的,所以在您的示例中,我们正在评估I(0,0),我们的内核是n=3m=3. 那么我们的形象就是N=5M=5. 如果您通过方程式,那么您将看到您得到的结果与您显示的完全一样。

(11)+(10)+(11)+(00)+(11)+(10)+(01)+(00)+(11)=1+0+1+0+1+0+0+0+1=4

这是一个点积,定义为产品的总和。我们逐元素相乘,然后将它们加在一起。结果就是你得到的答案4.

整个图像上的卷积操作是一个矩阵,其中每个条目都是这个点积。

我相信关键是,当过滤器对图像的某些部分(“感受野”)进行卷积时,过滤器中的每个数字(即每个权重)首先被展平为矢量格式同样,图像的像素也被展平为矢量格式然后,计算点积。这与查找逐个元素(逐个元素)乘法的总和完全相同。

当然,这些扁平化的向量也可以组合成矩阵格式,如下图所示。在这种情况下,可以使用真正的矩阵乘法,但重要的是要注意,来自每个卷积的图像像素的展平以及权重过滤器是前导。

在此处输入图像描述

图片来源:TensorFlow 和没有博士学位的深度学习,第 1 部分(Google Cloud Next '17)