Использование Stride в Conv1D - PullRequest
       8

Использование Stride в Conv1D

0 голосов
/ 17 февраля 2019

Я впервые пытаюсь использовать Conv1D в данных временных рядов.Я понимаю, что по умолчанию число шагов для conv1d равно 1. Но если у меня есть данные размером 1500x9, и я использовал 32 фильтра размера 250 и с шагом 9.

Я пытался искать на многих источниках, ноне получил хорошее объяснение.Если бы я использовал 9 в качестве значения шага, то моя функция 'model.summary ()' выглядит так: enter image description here

model=Sequential()
model.add(Conv1D(32,250,padding='same',input_shape=(1500,9), 
kernel_regularizer=regularizers.l2(0.01)))
c1 = MaxPooling1D(2)
model.add(c1)
model.add(Dropout(0.5))
model.add(BatchNormalization())

Если я использовал шаг = 1, то модель.summary ()выглядит так enter image description here

Как это будет работать?Я был бы рад, если бы кто-то мог объяснить это.

1 Ответ

0 голосов
/ 17 февраля 2019

это из-за градиентов, например, если вы вычисляете:

input shape:[batch,1500,9]
filtershape:[32,9,250]
stride:1

, если padding = "same", он применяет фильтр к каждым 32 из 1500 с разверткой 1 на 1, в этом случае оптимизатор asocietes фильтрует с 1500(int (1500/1)) градиенты процесса, но если вы установите шаг равным 9, тогда он применяет фильтр к каждому 32 из 1500 с увеличением 9 на 9, когда вы выполняете этот оптимизатор, asocietes фильтр с 166 (int (1500/9)) процессамиградиенты

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

Если вы хотите лучше понять, я предлагаю вам прочитать этот документ: https://www.tensorflow.org/api_guides/python/nn#Convolution

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