【问题标题】:Difference between parallel and sequential Convolutions in Convolutional Neural Network卷积神经网络中并行和顺序卷积的区别
【发布时间】:2017-11-14 22:30:14
【问题描述】:

我正在尝试使用 tensorflow 实现卷积神经网络来对文本进行分类。我已经找到了一些实现的模型,特别是找到了两个实现:

[我不能发布超过2个链接,我会尽量在cmets中提供来源]

但是,它们的架构似乎根本不同。第一个模型使用与输入数据并行的卷积,而第二个模型以顺序方式使用卷积。我用 tensorboard 可视化了这两个模型:

首先是并行卷积。在卷积之后,将结果连接起来,并使用一个全连接层创建输出。

parallel use of convolutions

顺序卷积似乎更直接,我们使用前一层的结果作为下一层的输入。

sequential use of convolutions

所以我的问题是,既然两者都用于对文本进行分类,那么这两种实现之间的区别在哪里,哪一种更适合对文本进行分类?

【问题讨论】:

标签: tensorflow neural-network deep-learning conv-neural-network


【解决方案1】:

这不是“并行”与“顺序”的必要条件。从我所看到的情况来看,“并行”实现实际上只是一个卷积层,但是具有不同的过滤器大小

基本上,如果您只有一个具有 93x3 特征的卷积层,它会是:

input                 convoluted                  pooling         
x * y * 1             x' * y' * 9                 x'' * y'' * 9

所以基本上,每个过滤器都会经历相同的池化和卷积操作。

但您的“顺序”模型的主要区别在于他使用了具有不同过滤器尺寸的功能。

input                 convoluted                  pooling          concat (may also flatten
x * y * 1             x1 * y1 * 3                 x1' * y1' * 3    x123' * y123' * 9
                      x2 * y2 * 3                 x2' * y2' * 3
                      x3 * y3 * 3                 x3' * y3' * 3

然后再次连接到 óne。此模型与“顺序”模型的唯一区别是他明确显示了不同的过滤器大小 - 但特征数量完全相同。

您的“平行”和“顺序”都是平行的:每个特征图都被单独卷积和合并。

【讨论】:

  • 你说的很对,非常感谢你的解释,这样更有意义!