import numpy as np
from keras.models import Sequential
from keras.layers.core import Dense, Activation
from keras.layers import LSTM
from keras.utils import plot_model
import random
def create_model_lstm(X_train, Y_train):
batch_size = 2
model = Sequential()
model.add(LSTM(5, batch_input_shape = (batch_size, X_train.shape[1], X_train.shape[2] )))
model.add(Dense(1))
model.compile(loss = 'mean_squared_error', optimizer = 'adam')
return(model)
X_train_m = np.random.rand(4,8)
Y_train_m = np.random.rand(4,1)
print('Original data shape:')
print(X_train_m.shape,Y_train_m.shape)
X_train_m = np.reshape(X_train_m, ( X_train_m.shape[0],1, X_train_m.shape[1]))
Y_train_m = np.reshape(Y_train_m, ( Y_train_m.shape[0],1, Y_train_m.shape[1]))
print('After reshape:')
print(X_train_m.shape,Y_train_m.shape)
model = create_model_lstm(X_train_m, Y_train_m)
print(model.summary())
model.fit(X_train_m, Y_train_m, epochs = 100, batch_size = 1, verbose = 3)Enter code here...Using TensorFlow backend.
Original data shape:
(4, 8) (4, 1)
After reshape:
(4, 1, 8) (4, 1, 1)
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm_1 (LSTM) (2, 5) 280
_________________________________________________________________
dense_1 (Dense) (2, 1) 6
=================================================================
Total params: 286
Trainable params: 286
Non-trainable params: 0
_________________________________________________________________
None
Traceback (most recent call last):
File "lstm4.py", line 34, in <module>
model.fit(X_train_m, Y_train_m, epochs = 100, batch_size = 1, verbose = 3)
File "tensorflow/lib/python3.4/site-packages/keras/models.py", line 856, in fit
initial_epoch=initial_epoch)
File "tensorflow/lib/python3.4/site-packages/keras/engine/training.py", line 1429, in fit
batch_size=batch_size)
File "tensorflow/lib/python3.4/site-packages/keras/engine/training.py", line 1309, in _standardize_user_data
exception_prefix='target')
File "tensorflow/lib/python3.4/site-packages/keras/engine/training.py", line 127, in _standardize_input_data
str(array.shape))
ValueError: Error when checking target: expected dense_1 to have 2 dimensions, but got array with shape (4, 1, 1)
I think that batch_size is problem. How about changing batch_size from 1 to 2 in fit(), because you set batch_size as 2 in create_model_lstm()?
model.fit(X_train_m, Y_train_m, epochs = 100, batch_size = 2, verbose = 3)
Original data shape:
(4, 8) (4, 1)
After reshape:
(4, 1, 8) (4, 1, 1)
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm_1 (LSTM) (2, 5) 280
_________________________________________________________________
dense_1 (Dense) (2, 1) 6
=================================================================
Total params: 286
Trainable params: 286
Non-trainable params: 0
_________________________________________________________________
None
Traceback (most recent call last):
File "lstm4.py", line 34, in <module>
model.fit(X_train_m, Y_train_m, epochs = 100, batch_size = 2, verbose = 3)Hello,
Original data shape:
(2, 8) (2, 1)
After reshape:
(2, 1, 8) (2, 1, 1)
Layer (type) Output Shape Param #
=================================================================
lstm_1 (LSTM) (2, 5) 280
_________________________________________________________________
dense_1 (Dense) (2, 1) 6
=================================================================
Total params: 286
Trainable params: 286
Non-trainable params: 0
_________________________________________________________________
None
Traceback (most recent call last):
File "lstm4.py", line 34, in <module>
model.fit(X_train_m, Y_train_m, epochs = 100, batch_size = 2, verbose = 3)
File "tensorflow/lib/python3.4/site-packages/keras/models.py", line 856, in fit
initial_epoch=initial_epoch)
File "tensorflow/lib/python3.4/site-packages/keras/engine/training.py", line 1429, in fit
batch_size=batch_size)
File "tensorflow/lib/python3.4/site-packages/keras/engine/training.py", line 1309, in _standardize_user_data
exception_prefix='target')
File "tensorflow/lib/python3.4/site-packages/keras/engine/training.py", line 127, in _standardize_input_data
str(array.shape))
ValueError: Error when checking target: expected dense_1 to have 2 dimensions, but got array with shape (2, 1, 1)