有人可以向我解释当keras Conv1D图层被送入2D输入时会发生什么? 如:
model=Sequential()
model.add(Conv1D(input_shape=(9000,2),kernel_size=200,strides=1,filters=20))
改变(9000,1)和(9000,2)之间的输入大小并调用model.summary(),我看到输出形状保持不变,但参数的数量发生了变化。那么,这是否意味着为每个通道训练不同的滤波器,但输出在输出之前在第二维上求和/平均?或者是什么?
答案 0 :(得分:3)
这是一个视觉插图
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!
答案 1 :(得分:2)
In the doc你可以读到输入必须是2D。
Conv1D可以看作是一个遍历一系列向量的时间窗口。内核将是2dimensions窗口,与矢量长度一样大(所以输入的第二个维度)并且将与窗口大小一样长......
所以确实你的两个网络具有相同的输出形状是完全正常的......并且参数的数量更高,因为内核由于第二维而大2倍。
我希望这会有所帮助: - )