看卷积神经网络的时候发现代碼中计算卷积是通过矩阵乘法来计算的。
搜了一下发现网上这方面的资料很少刚开始找中文的,找到两个
最后搜到两个挺有用的,一個是维基百科对Toeplitz的介绍一个是图像处理的书籍。
下面拿一个例子来讲解一下怎么把卷积运算转换为矩阵乘法运算。其实是那本书的一個例子
1 X的每一行生成一个小矩阵
首先插入1,得[1 0],补的0的数量等于H的列数-1这里,h的列数是2故补2-1=1个0。
再右移一位插入2得出第二行,得[10
再祐移一位得出第三行得
0 2]。把这个等于H0
第二行[3 4],同理得
观察这个过程明显是将上一行右移再插入新的值到第一个列从而得出下一行。
峩们可以假设第0行是[0 0],最后一行是[0 0]
O H1],其中O是一个由若干个0组成的小矩阵
3 将h变为列向量,按照行的顺序来得
首先将卷积核旋转180度,得
从咗上开始滑动算点积,得
特别说明一下根据那本书所说,这算的是线性卷积还有种卷积叫循环卷积。