I'm trying to solve the following problem:
- I have time series data from a number of devices.
- Each device recording is of length 3000.
- Every datapoint captured has 4 measurements.
Therefore, my data is shaped: (number of device recordings, 3000, 4)
.
I'm trying produce a vector of length 3000 where each data point of is one of 3 labels (y1, y2, y3), so my desired output dim is (number of device recording, 3000, 1). I have labeled data for training.
I'm trying to use an LSTM model for this, as 'classification as I move along time series data' seems like a RNN type of problem.
I have my network set up like this:
model = Sequential()
model.add(LSTM(3, input_shape=(3000, 4), return_sequences=True))
model.add(LSTM(3, activation = 'softmax', return_sequences=True))
model.summary()
and the summary looks like this:
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
_________________________________________________________________
All looks good and well in the output space, as I can use the result from each unit to determine which of my three categories belongs to that particular time step (I think).
But I only have 180 trainable parameters, so I'm guessing that I am doing something horribly wrong.
Questions:
- Can someone help me understand why I have so few trainable parameters?
- Am I misinterpreting how to set up this LSTM?
- Am I just worrying over nothing?
- Does that 3 units mean I only have 3 LSTM 'blocks'?
- And that it can only look back 3 observations?