CNN似乎主要用于固定大小的输入。现在我想用CNN训练一些不同大小的句子,有哪些常用方法?
答案 0 :(得分:4)
以下建议主要涉及计算机视觉领域的CNN(特别是用于识别),但在您的领域可能也有所帮助:我会看一下"Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition" by He et al.提出空间金字塔池层。< / p>
总体思路:CNN的卷积层(以及诸如汇集,本地响应规范化等相关层)能够处理可变大小的输入。因此,可变大小输入的问题向下传播到需要固定大小的矢量的第一完全连接/内部产品层。他等人。建议在第一个完全连接的层之前添加空间金字塔池图层(文中的详细信息)。层本身通过将最后一个卷积层(或后续池化或响应规范化层)的特征映射分层划分为固定数量的二进制位来工作。在这些箱中,响应通常被合并,创建一个固定大小的输出(其大小取决于层次结构和箱数)。请参阅论文以供说明。
该图层已基于Caffe实现,可在GitHub上使用:ShaoqingRen/SPP_net。
答案 1 :(得分:1)
引用上述论文的摘要:
网络使用动态k-Max Pooling,一种全局池操作 过线性序列。网络处理各种输入句子 长度并在有能力的句子上引入特征图 明确捕捉短期和长期关系。网络 不依赖于解析树,并且很容易适用于任何解析树 语言。我们在四个实验中测试DCNN:小规模二进制和 多类情感预测,六向问题分类和 通过远程监督推测Twitter情绪。网络 在前三项任务中取得优异成绩并取得更大成绩 相对于上一个任务,错误减少超过25% 最强的基线。
我自己没有使用过它,但它在SO上解决了另一个类似的sentences modeling problem。