Я пытаюсь решить следующую проблему:
У меня есть данные временных рядов от ряда устройств. каждая запись устройства имеет длину 3000. Каждый захваченный пункт данных имеет 4 измерения. поэтому мои данные сформированы (количество записей устройства, 3000, 4).
Я пытаюсь создать вектор длиной 3000, где каждая точка данных представляет собой одну из 3 меток (y1, y2, y3), поэтому мой желаемый выходной диммер (номер записи устройства, 3000, 1). Я пометил данные для обучения.
Я пытаюсь использовать для этого модель LSTM, поскольку «классификация по ходу данных временных рядов» кажется проблемой типа RNN.
Моя сеть настроена так:
model = Sequential()
model.add(LSTM(3, input_shape=(3000, 4), return_sequences=True))
model.add(LSTM(3, activation = 'softmax', return_sequences=True))
model.summary()
, и сводка выглядит следующим образом:
Model: "sequential_23"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm_29 (LSTM) (None, 3000, 3) 96
_________________________________________________________________
lstm_30 (LSTM) (None, 3000, 3) 84
=================================================================
Total params: 180
Trainable params: 180
Non-trainable params: 0
_________________________________________________________________
Все выглядит хорошо и хорошо в выходном пространстве, так как я могу использовать результат каждого блока, чтобы определить, какая из моих трех категорий принадлежит этому конкретному временному шагу (я думаю).
Но у меня есть только 180 обучаемых параметров, поэтому я предполагаю, что я делаю что-то ужасно не так.
Может кто-нибудь помочь мне понять, почему у меня так мало обучаемых параметров? Я неправильно понимаю, как настроить этот LSTM? Я просто ни о чем не беспокоюсь?
Означает ли это, что 3 единицы означают, что у меня только 3 блока LSTM? а что он может оглянуться только на 3 наблюдения?