2016-03-28 143 views
2

CNN似乎主要针对固定大小的输入实施。现在我想用CNN来训练一些不同大小的句子,有哪些常用的方法?如何使用CNN来训练不同大小的输入数据?

+0

始终将输入掩盖到数据集中的最大尺寸。 – alvas

+1

但我正在尝试处理一些文章,其长度范围从500到40,000 ...可能填充有点低效? –

回答

2

以下建议主要与CNN有关的计算机视觉(特别是用于识别),但也可能对您的域有所帮助:我会看看"Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition" by He et al.提出一个空间金字塔池图层。

总体思路:CNN的卷积层(以及相关层,如池,本地响应规范化等)能够处理可变大小的输入。因此,可变尺寸输入的问题向下传播到需要具有固定尺寸的矢量的第一完全连接/内积层。他等人。建议在第一个完全连接层之前添加Spatial Pyramid Pooling Layer(本文详细内容)。该层本身通过将最后一个卷积层(或随后的池化或响应规范化层)的特征映射分层划分为固定数量的分箱来工作。在这些垃圾箱内,通常会收集响应,创建一个固定大小的输出(其大小取决于垃圾箱的层次和数量)。请参阅纸张的插图。

该图层已经基于Caffe实现,可在GitHub上获得:ShaoqingRen/SPP_net

+0

这是关于可变大小输入的一般概念的一个很好的答案,但它是关于计算机视觉,而问题是关于句子 – dvb

+1

是的,的确如此。这就是为什么我的意思是一个建议。自然地,递归神经网络将是处理不同长度的句子/单词的好模型。但是这个问题明确地询问CNN。 CNN确实主要用于固定大小的输入 - 独立于应用程序域。在计算机视觉中,SPP图层和类似的池化方法非常流行。这些想法是通用的,并不局限于计算机视觉,只是发生在计算机视觉领域。 –

1

DynamicCNN - for Theano/Lasagne by Fréderic Godin是一种可能对句子建模更好的方法。它是基于一个由Nal Kalchbrenner,爱德华Grefenstette,菲尔Blunsom从2014年

引述提到论文的摘要命名"A Convolutional Neural Network for Modelling Sentences"纸:

的网络使用动态K-最大池,一个全球性的池操作 超过线性序列。网络处理长度不等的输入句子,并且在能够明确捕获短期和长期关系的句子上诱导特征图。网络 不依赖分析树,并且很容易适用于任何 语言。我们在四个实验中测试了DCNN:小规模二进制和 多级情感预测,六方问题分类和 远程监控的Twitter情绪预测。网络 在前三个任务中获得了优异的性能,在最后一个任务中相对于最强基准的错误减少了25%,因此获得了更好的性能。

我自己并没有使用它,但它解决了SO上的另一个类似的sentences modeling problem

相关问题