Несколько слоев Conv1D: отрицательный размер, вызванный вычитанием 8 из 1 для 'conv1d_2 / convolution / Conv2D - PullRequest
0 голосов
/ 22 апреля 2019

Я все еще довольно новичок в отношении сверточных сетей. Я пытаюсь реализовать несколько слоев Conv1D в Keras. К сожалению, после самого первого слоя любые последующие слои выдают следующую ошибку:

tensorflow.python.framework.errors_impl.InvalidArgumentError: Negative dimension size caused by subtracting 8 from 1 for 'conv1d_2/convolution/Conv2D' (op: 'Conv2D') with input shapes: [?,1,1,32], [1,8,32,32].

Я думал, что это может быть связано с уменьшением размера из-за шагов, но он все равно не работает после установки strides=1 для обеих линий Conv1D. Вот мой код Если цикл for выполняется, выдается ошибка.

#State branch
x = Conv1D(layerSize,8,strides=1)(inputState)
x = Activation("relu")(x)

for l in range(conv1Layer-1):
    x = Conv1D(layerSize,8,strides=1)(x)
    x = Activation("relu")(x)

x = MaxPooling1D(pool_size=1)(x)
x = Flatten()(x)
x = Model(inputs=inputState, outputs=x)

Любая помощь или совет будет принята с благодарностью. Спасибо!

Ответы [ 2 ]

0 голосов
/ 22 апреля 2019

размер ядра должен быть изменен на 1 после первого слоя.

РЕДАКТИРОВАТЬ: Или заполнение должно быть установлено на то же самое!Спасибо.

0 голосов
/ 22 апреля 2019

Если вы не хотите, чтобы длина изменялась после свертки, рассмотрите возможность указания padding='same' в конструкторе Conv1d.

Для получения дополнительной информации см. документы .

...