1. 前提说明
本博客主要为了介绍textcnn,因此首先需要了解cnn的基本知识
2. 卷积层
2.1 cnn
- 一般来讲输入都是[batch, height, weight, in_channles]
- 卷积核由三部分组成:
- kernel_size(上图中一个2×2的小方块)
- in_channels(与输入的in_channel一样,因为要对应相乘)
- out_channels可以理解成输出的维度,其实就是filter的个数
2.2 text_cnn
- 一般来讲输入都是[batch, height, in_channles](相当于cnn中的width=1并省略)
- 卷积核由三部分组成:
- kernel_size(上图中一个2×1的小方块)
- in_channels(与输入的in_channel一样,也即词向量的维度)
- out_channels可以理解成输出的维度,其实就是filter的个数
小结:text_cnn是一种特殊的cnn,即cnn的width=1,并省略
3. 池化层
3.1 cnn
池化层有最大池化、平均池化、随机池化等
3.2 text_cnn
text_cnn一般是全局最大池化,或全局平均池化,无论哪种,height都会变成1(会不会省略看框架),最终只剩下out_channel即filter的个数了。
以上均是一个样本图,如果加上batch_size,那么text最后的输出就是**(batch,out_channel)或者(batch, 1, out_channel)**。具体顺序还得由框架决定