如何使用CNN训练不同大小的输入数据?

Hao*_*Tan 5 nlp machine-learning deep-learning

CNN 似乎主要用于固定大小的输入。现在想用CNN来训练一些不同大小的句子,有哪些常用的方法?

Dav*_*utz 6

以下建议主要与用于计算机视觉任务(特别是用于识别)的 CNN 有关,但也可能对您的领域有所帮助:我会看看He 等人的“用于视觉识别的深度卷积网络中的空间金字塔池化” . 提出空间金字塔池化层。

总体思路:CNN 的卷积层(以及相关层,例如池化、局部响应归一化等)能够处理可变大小的输入。因此,可变大小输入的问题向下传播到第一个全连接/内积层,这需要固定大小的向量。他等人。建议在第一个全连接层之前添加空间金字塔池化层(详见论文)。该层本身的工作原理是将最后一个卷积层(或随后的池化或响应归一化层)的特征图分层划分为固定数量的 bin。在这些 bin 中,响应通常被合并,创建一个固定大小的输出(其中大小取决于 bin 的层次结构和数量)。请参阅论文中的说明。

该层已基于 Caffe 实现,可在 GitHub:ShaoqingRen/SPP_net上找到。

  • 是的,这是真的。这就是为什么我的意思是作为一个建议。自然,循环神经网络将是处理不同长度的句子/单词的好模型。但是这个问题明确地询问了 CNN。CNN 确实主要用于固定大小的输入——独立于应用领域。在计算机视觉中,SPP 层和类似的池化方法很流行。这些想法是通用的,不仅限于计算机视觉,碰巧我是从计算机视觉中了解它们的。 (2认同)