这张图比较直观,下文以这张图为样例,从左到右分为6步,这里忽略第六步的softmax输出:
第一步:
在第一步的矩阵中,每一行对应一个词向量,纵向堆叠,形成一个矩阵,代表一个句子,形状为7x5(词向量维度为5,一共7个单词)
第二步:
开始构建卷积核,这张图的样例中考虑三个过滤器 (filter) 宽度 (2,3,4) ,每个宽度有两个过滤器(生成两个feature map)
过滤器简单来说代表一些卷积核的集合,假设有一个3通道的原始输入,有两个卷积核(即2通道),则这两个卷积核会在每个通道上都卷积一次,最终生成6个结果(因为原输入有3个通道,一个卷积核会应用三次),此时再把相同卷积核生成的结果加在一起,最后生成两张feature map,而过滤器指的就是这两个卷积核的集合
在单通道的情况下(即一个卷积核),卷积核和过滤器可以看成一个东西
更详细的可以看这篇文章:卷积核(kernel)和过滤器(filter)的区别_filter和kernal的区别-CSDN博客
可以看到这里的卷积核大小是 region \times d,region指宽度,d指词向量的维度
第三步:
卷积过后,每个宽度会生成两个特征图(feature map),因为是1维卷积,所以这里是在左侧原始输入的竖直方向卷积,这里的例子中 stride=1, padding=0
第四步:
然后进行1维的最大池化(max pooling),每个特征图都被池化成了一个值,剩下6个值
第五步:
把这六个值拼接在一起,重新成为一个特征向量