CNN 中内核大小与输入大小的关系

Relation between kernel size and input size in CNN

我在 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'])

为确保输出特征图的大小与输入特征图的大小相同,您必须使用 'same' 填充来填充输入。

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