详细讲述matlab中矩阵的卷积函数convn
在用到matlab写卷积神经网络的时候要用到C=convn(A,B,‘shape’)函数,在这里详细讲述一下他用来干嘛的以及怎么用。文字陈述的话太难懂,不如一个图片例子来的快。
例如:矩阵A=
1232\begin{matrix}1
&2\\3
&2&\\
\\
\end{matrix}1322
矩阵B=
2131\begin{matrix}2
&1\\3
&1&\\
\\
\end{matrix}2311
在卷积的过程中,A作为卷积核,B作为被卷积的图片。
卷积过程如下
首先将矩阵A进行360度的旋转,变成A’
A’=
2321\begin{matrix}2
&3\\2
&1&\\
\\
\end{matrix}2231
将旋转后的A矩阵A’在B矩阵上面进行平移,如下图所示,
第一幅图的计算公式为: (2* 0)+(3* 0)+(2* 0)+(1* 2)=2 ,下面依此类推
此处省略两张向右平移的图
具体代码在matlab中的实现
>> a=[1 2;3 2]
a =
1 2
3 2
>> b=[2 1;3 1]
b =
2 1
3 1
>> c=convn(a,b)
c =
2 5 2
9 14 4
9 9 2
>>