深度学习中的卷积运算计算公式

卷积运算是深度学习中常用的操作,用于从输入数据中提取特征。以下是卷积运算的基本计算公式,包括输入输出关系、输出维度和参数量,我将通过一个简单的示例来说明。

卷积运算的基本公式:

  1. 输入和输出关系:

    输入图像的大小为 ( I H I_H IH, I W I_W IW),其中 I H I_H IH 表示输入的高度, I W I_W IW 表示输入的宽度。

    卷积核的大小为 ( K H K_H KH, K W K_W KW),其中 K H K_H KH 表示卷积核的高度, K W K_W KW 表示卷积核的宽度。

    输出特征图的大小为 ( O H O_H OH, O W O_W OW),其中 O H O_H OH 表示输出的高度, O W O_W OW 表示输出的宽度。

  2. 输出维度计算:

    输出特征图的大小可以通过以下公式计算:

    O H = ( I H − K H + 2 ∗ P H ) / S + 1 O_H = (I_H - K_H + 2 * P_H) / S + 1 OH=(IHKH+2PH)/S+1
    O W = ( I W − K W + 2 ∗ P W ) / S + 1 O_W = (I_W - K_W + 2 * P_W) / S + 1 OW=(IWKW+2PW)/S+1

    其中, P H P_H PH P W P_W PW 是填充(padding)的大小,S 是步幅(stride)。填充是在输入图像的周围添加额外的像素,以便更好地处理边缘信息。步幅定义了卷积核在输入上滑动的距离。

  3. 参数量计算:

    卷积核的参数量取决于卷积核的大小以及输入的通道数和输出的通道数。参数数量可以通过以下公式计算:

    参数数量 = K H ∗ K W ∗ C i n ∗ C o u t K_H * K_W * C_{in} * C_{out} KHKWCinCout

    其中, C i n C_{in} Cin 是输入通道数, C o u t C_{out} Cout 是输出通道数。

示例:

假设有一张灰度图像,大小为 28x28 像素( I H = I W = 28 I_H = I_W = 28 IH=IW=28),我们要应用一个大小为 3x3 的卷积核( K H = K W = 3 K_H = K_W = 3 KH=KW=3),填充为1( P H = P W = 1 P_H = P_W = 1 PH=PW=1),步幅为2( S = 2 S = 2 S=2),并且输出通道数为32( C o u t = 32 C_{out} = 32 Cout=32)。

  1. 输出维度计算:

    O H = ( 28 − 3 + 2 ∗ 1 ) / 2 + 1 = 14 O_H = (28 - 3 + 2 * 1) / 2 + 1 = 14 OH=(283+21)/2+1=14
    O W = ( 28 − 3 + 2 ∗ 1 ) / 2 + 1 = 14 O_W = (28 - 3 + 2 * 1) / 2 + 1 = 14 OW=(283+21)/2+1=14

    因此,输出特征图的大小为 14 × 14 14×14 14×14 像素。

  2. 参数量计算:

    参数数量 = 3 ∗ 3 ∗ 1 ∗ 32 = 288 3 * 3 * 1 * 32 = 288 33132=288

    这意味着有288个可学习的参数在卷积核中用于提取特征。

这就是卷积运算的基本计算公式和示例。卷积操作在深度学习中非常常见,用于构建卷积神经网络(CNNs)以处理图像、文本和其他类型的数据。它有助于提取输入数据的特征并生成适当维度的输出。