二维输入上的 Conv1D

Conv1D on 2D input

有人可以向我解释当 keras Conv1D 层被输入二维输入时会发生什么吗? 如:

model=Sequential()
model.add(Conv1D(input_shape=(9000,2),kernel_size=200,strides=1,filters=20))

在 (9000,1) 和 (9000,2) 之间改变输入大小并调用 model.summary(),我看到输出形状保持不变,但参数数量发生变化。那么,这是否意味着为每个通道训练了不同的过滤器,但在输出之前输出是 summed/averaged 横跨 2nd 维度?或者什么?

In the doc 你可以看到输入必须是二维的。

Conv1D 可以看作是时间-window 遍历向量序列。内核将是 2 维 window,与向量长度一样大(因此输入的第二维),并且与您的 window 大小一样长...

因此,您的两个网络具有相同的输出形状确实是完全正常的...并且参数数量更多是因为内核由于第二维而大 2 倍。

希望对您有所帮助:-)

这是一个视觉插图

kernel_size = (2, )

------------- 
| 1 1 1 1 1 |                <---- kernel dim = kernel_size X 5
| 2 2 2 2 2 |
-------------
  3 3 3 3 3 



--------------------------
| 1 1 1 1 1 1 1 1 1 1 1 1 |  <---- kernel dim = kernel_length X 12
| 2 2 2 2 2 2 2 2 2 2 2 2 |        i.e more params! but after 
--------------------------         you apply say MaxPool1D(pool_size=(2,2))
  3 3 3 3 3 3 3 3 3 3 3 3          in both cases, then layer shapes from here
                                   on out are the same, thus same outputs!