二维输入上的 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!
有人可以向我解释当 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!