代码之家  ›  专栏  ›  技术社区  ›  Neabfi

cnn中核大小与输入大小的关系

  •  1
  • Neabfi  · 技术社区  · 6 年前

    我在Keras有一个conv1d层,内核大小为3,步幅长度为1。 当我试图处理输入大小为5时,出现了以下错误,但所有操作都在输入大小为6时工作。

    InvalidArgumentError (see above for traceback): Computed output size would be negative:
    -1 [input_size: 0, effective_filter_size: 3, stride: 1]
    

    我认为3号内核至少需要3号的输入。

    编辑:这是模型,输入大小是可变的,我遇到的问题是输入大小为5。

    model = Sequential()
    model.add(Conv1D(
        input_shape=(None, 4),
        filters=64,
        kernel_size=3,
        activation='relu'))
    model.add(Conv1D(
        filters=32,
        kernel_size=3,
        activation='relu'))
    model.add(Conv1D(
        filters=16,
        kernel_size=2,
        activation='relu'))
    model.add(GlobalMaxPooling1D())
    model.add(Dense(number_of_classes))
    model.add(Softmax(axis=-1))
    model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Se7eN    6 年前

    要确保输出功能映射的大小与输入功能映射的大小相同,必须使用“相同”填充填充输入。

    model.add(Conv1D(
        input_shape=(None, 4),
        filters=64,
        kernel_size=3,
        activation='relu',
        padding='same'))