Я выполняю многомерный анализ временных рядов.Я собираюсь многократно запускать эту сеть с разными размерами пакетов и гиперпараметрами.Поэтому до сих пор я придерживался общих соображений и предполагал, что
B := Number of batches
T := Number of timesteps per batch
N := Number of features per timestep
Моя конечная цель - вызвать model.predict для одной партии (которая, конечно, не использовалась для обучения).Таким образом, это будет выглядеть так:
prediction = model.predict(unknown)
unknown.shape = (T, N)
prediction.shape = (N,)
Я пробовал множество сетей.
Я не могу заставить это работать
model.add(LSTM(N, input_shape=(T, N), return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(N, input_shape=(T, N), return_sequences=False))
model.add(Dense(N))
Однако, я МОГУ заставить это работать
model.add(LSTM(N, input_shape=(T, N), return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(N, input_shape=(T, N), return_sequences=True)) # True here
model.add(Dense(N))
Что не так с return_sequence = True, если выходные данные включаютэтот последний временной шаг, который f (t + 1), который я ищу?Я полагаю, что ничего, но это не решает фундаментальную проблему, которая заключается в том, что я не до конца понимаю, как построить эти сети.Как я уже сказал, я хочу, чтобы все было как можно более общим и глубоко понимать сети, прежде чем я начну погружаться в эксперименты.
Я буду проводить эксперименты с очень разными значениями для B, T и N, чтобы увидеть, какие из них работаютсамое лучшее.
Я пытался читать документы и еще много чего, но я довольно застрял и разочаровался, поэтому подумал, что повернусь к сообществу.