以TextCNN为例说明一维卷积工作详细过程

最近在写论文,刚好在用一维卷积,平常都是直接打印输入输出维度,然后进行各种操作,以前理解过一维卷积的详细过程,但时间一久,也忘记了,鉴于网上对一维卷积过程的描述过于混乱,没有一个比较统一且实践性的说法,这里以TextCNN为例,来说明一维卷积是如何工作的

先上一张TextCNN的经典图
以TextCNN为例说明一维卷积工作详细过程_第1张图片
二维卷积大家都非常清楚,网上也有非常清晰明了的动图演示,简单的来说,无非就是一个卷积核矩阵从左到右、从上到下的扫描一个大矩阵,从而得到一个新的矩阵。

那么接下来我们从TextCNN开始讲起

1.如下图所示,输入是7*5的矩阵,7是序列长度,5是embedding长度。
以TextCNN为例说明一维卷积工作详细过程_第2张图片
2.红色框起来的部分,就是卷积核了,这里一共有6个卷积核,但是有3类卷积核,分别是2*embedding、3*embedding、4*embedding 三类卷积核,每类卷积核各有两个卷积核,所以一共有6个卷积核。

这里要注意的是,二维卷积从左向右,从上到下扫描,对于图中这种输入数据是没有任何意义的,二维卷积会将不同词但是同一位置下的词嵌入数据进行处理,这是没有意义的。

所以一维卷积如图所示,其列均是embedding的长度,即一维卷积是从上向下扫描的

3.有6个卷积核那么便会生成6个数据,如下图红色框所示。
以TextCNN为例说明一维卷积工作详细过程_第3张图片
4.剩下的就是pooling和concat以及全连接了,过于简单,不多阐述。
以TextCNN为例说明一维卷积工作详细过程_第4张图片
至此一维卷积工作详细过程以及TextCNN工作过程阐述完毕!

你可能感兴趣的:(NLP(包含深度学习))