给定一个输入序列 x = [ x 1 , x 2 , ⋯ , x n ] x = [x_1,x_2,\cdots,x_n] x=[x1,x2,⋯,xn] 和一个卷积核(滤波器) k = [ k 1 , k 2 , ⋯ , k m ] k = [k_1,k_2,\cdots,k_m] k=[k1,k2,⋯,km],其中 m ≤ n m\leq n m≤n。一维卷积的计算过程是通过将卷积核在输入序列上滑动,在每个位置计算它们的点积。
设输出序列为 y = [ y 1 , y 2 , ⋯ , y n − m + 1 ] y = [y_1,y_2,\cdots,y_{n - m+1}] y=[y1,y2,⋯,yn−m+1],则 y i = ∑ j = 0 m − 1 k j x i + j y_i=\sum_{j = 0}^{m - 1}k_jx_{i + j} yi=∑j=0m−1kjxi+j。例如,当 n = 5 n = 5 n=5, m = 3 m = 3 m=3, x = [ 1 , 2 , 3 , 4 , 5 ] x=[1,2,3,4,5] x=[1,2,3,4,5], k = [ 1 , 2 , 3 ] k = [1,2,3] k=[1,2,3]时, y 1 = 1 × 1 + 2 × 2 + 3 × 3 = 14 y_1=1\times1 + 2\times2+3\times3 = 14 y1=1×1+2×2+3×3=14。
在深度学习中的表示
在深度学习框架(如PyTorch或TensorFlow)中,一维卷积层通常表示为Conv1d。它接受一个形状为 ( b a t c h _ s i z e , c h a n n e l s _ i n , s e q u e n c e _ l e n g t h ) (batch\_size, channels\_in, sequence\_length) (batch_size,channels_in,sequence_length)的输入张量,并输出一个形状为 ( b a t c h _ s i z e , c h a n n e l s _ o u t , o u t p u t _ s e q u e n c e _ l e n g t h ) (batch\_size, channels\_out, output\_sequence\_length) (batch_size,channels_out,output_sequence_length)的张量。其中channels_in是输入通道数,channels_out是输出通道数,output_sequenc_length取决于输入序列长度、卷积核大小和步长等参数。
对于一个二维输入矩阵 X ∈ R H × W X\in R^{H\times W} X∈RH×W( H H H表示高度, W W W表示宽度)和一个二维卷积核(滤波器) K ∈ R h × w K\in R^{h\times w} K∈Rh×w( h h h和 w w w分别是卷积核的高度和宽度)。二维卷积的计算是将卷积核在输入矩阵上滑动,在每个位置计算它们的对应元素乘积之和。
设输出矩阵为 Y ∈ R H − h + 1 × W − w + 1 Y\in R^{H - h+1\times W - w + 1} Y∈RH−h+1×W−w+1,对于输出矩阵中的元素 y i j y_{ij} yij,其计算公式为 y i j = ∑ m = 0 h − 1 ∑ n = 0 w − 1 k m n x i + m , j + n y_{ij}=\sum_{m = 0}^{h - 1}\sum_{n = 0}^{w - 1}k_{mn}x_{i + m,j + n} yij=∑m=0h−1∑n=0w−1kmnxi+m,j+n。例如,当 X = [ 1 2 3 4 5 6 7 8 9 ] X=\begin{bmatrix}1&2&3\\4&5&6\\7&8&9\end{bmatrix} X=147258369, K = [ 1 1 1 1 ] K=\begin{bmatrix}1&1\\1&1\end{bmatrix} K=[1111],计算 y 11 y_{11} y11时, y 11 = 1 × 1 + 2 × 1 + 4 × 1 + 5 × 1 = 12 y_{11}=1\times1+2\times1+4\times1+5\times1 = 12 y11=1×1+2×1+4×1+5×1=12。
在深度学习中的表示
在深度学习框架中,二维卷积层通常表示为Conv2d。它接受一个形状为 ( b a t c h _ s i z e , c h a n n e l s _ i n , h e i g h t , w i d t h ) (batch\_size, channels\_in, height, width) (batch_size,channels_in,height,width)的输入张量,并输出一个形状为 ( b a t c h _ s i z e , c h a n n e l s _ o u t , o u t p u t _ h e i g h t , o u t p u t _ w i d t h ) (batch\_size, channels\_out, output\_height, output\_width) (batch_size,channels_out,output_height,output_width)的张量。其中channels_in是输入通道数(例如彩色图像的RGB通道数为3),channels_out是输出通道数,output_height和output_width取决于输入图像的高度、宽度、卷积核大小和步长等参数。