首页 文章

2D输入上的Conv1D

提问于
浏览
5

有人可以向我解释当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(),我看到输出形状保持不变,但参数的数量发生了变化 . 那么,这是否意味着为每个通道训练不同的滤波器,但输出在输出之前在第二维上求和/平均?或者是什么?

2 回答

  • 3

    In the doc你可以读到输入必须是2D .

    Conv1D可以看作是一系列向量的时间窗口 . 内核将是2dimensions窗口,与矢量长度一样大(因此输入的第二个维度)并且将与窗口大小一样长...

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

    我希望这有帮助 :-)

  • 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!
    

相关问题