How to set input for proper fit with lstm?
You should be structuring your data as a tuple: Number of samples, timesteps, features. In your case number of samples is 53394, timesteps is 1 and number of features is 3. So the input shape will be (53394, 1, 3). 
You can use this snippet of code for the tranformation: 

trainX = trainX.reshape((trainX.shape[0], 1, 3))


And set the argument input_shape  as below:

input_shape = (trainX.shape[1], trainX.shape[2])


Hope this helps!