Модель TensorFlow 1D, неправильная форма ввода для MaxPooling - PullRequest
0 голосов
/ 14 ноября 2018

Я строю 1D модель с TensorFlow для аудио, но у меня проблема с формой ввода во время второго MaxPool1D в модели.

Проблема здесь, после этого пулирования:

x = Convolution1D(32, 3, activation=relu, padding='valid')(x)
x = MaxPool1D(4)(x)

Я получаю эту ошибку:

ValueError: Отрицательный размерный размер, вызванный вычитанием 4 из 1 для 'max_pooling1d_5 / MaxPool' (op: 'MaxPool') с входными формами: [?,1,1,32].

Я пытался изменить форму x (это тензор), но я не думаю, что я иду в правильном направлении.

В этой же модели, до этого, у меня есть пара сверточных слоев и макспуллинг, которые работают пропорционально.

У кого-нибудь есть предложения?Спасибо

1 Ответ

0 голосов
/ 14 ноября 2018

Количество шагов на входе в слой MaxPool1D меньше размера пула.

В сообщении об ошибке написано ...input shapes: [?,1,1,32], что означает, что выход из слоя Convolution1D имеет форму [1,32].Это должно быть как минимум 4 шага для использования в качестве входных данных для слоя MaxPool1D(4), поэтому минимальный размер [4,32].

.Например, слой Convolution1D уменьшит размер шага на kernel_size-1 = 2.Это означает, что вход для слоя Convolution1D должен иметь по крайней мере 4 + 2 = 6 шагов, что означает форму по крайней мере [6,?].Продолжая до входного слоя, вы обнаружите, что размер ввода слишком мал.

Вам нужно будет изменить архитектуру, чтобы разрешить размер ввода, или, если применимо, изменить размер ввода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...