units
- это первый параметр LSTM
, который представляет последнее измерение выходных данных на этом слое. Он показывает первую ошибку, потому что ваш код не имеет units
в первой попытке. units
удовлетворяет условию, так что он показывает вторую ошибку во второй попытке.
В этом случае следует использовать параметр input_shape
, чтобы указать форму ввода первого слоя. Ваш первый LSTM
слой input_shape
должен иметь две данные (timestep
и feature
, batch_size
не нужно заполнять по умолчанию), поскольку LSTM требует трехмерного ввода. Предполагая, что ваш временной шаг равен 10, ваш код должен быть изменен на следующий.
from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Dense, LSTM, Dropout,Activation
model = Sequential()
model.add(LSTM(units=100,input_shape=(10,1),return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(100, return_sequences=False))
model.add(Dropout(0.2))
model.add(Dense(units=1))
model.add(Activation('linear'))
model.compile(loss="mse", optimizer="rmsprop")
print(model.summary())
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm (LSTM) (None, 10, 100) 40800
_________________________________________________________________
dropout (Dropout) (None, 10, 100) 0
_________________________________________________________________
lstm_1 (LSTM) (None, 100) 80400
_________________________________________________________________
dropout_1 (Dropout) (None, 100) 0
_________________________________________________________________
dense (Dense) (None, 1) 101
_________________________________________________________________
activation (Activation) (None, 1) 0
=================================================================
Total params: 121,301
Trainable params: 121,301
Non-trainable params: 0
_________________________________________________________________