title: Keras reshape input LSTM
body: <p>I am working on a dummy example to understand how the LSTM works using Keras.
  I am having a problem with the way I am reshaping the data input and output.</p>
  
  <p>ValueError: Input 0 is incompatible with layer recurrent: expected ndim=3, found ndim=2</p>
  
  <pre><code>import random
  import numpy as np
  
  from keras.layers import Input, LSTM, Dense
  from keras.layers.wrappers import TimeDistributed
  from keras.models import Model
  
  def gen_number():
      return np.random.choice([random.random(), 1], p=[0.2, 0.8])    
  truth_input = [gen_number() for i in range(0,2000)]    
  # shift input by one
  truth_shifted = truth_input[1:] + [np.mean(truth_input)]      
  truth = np.array(truth_input)
  test_ouput = np.array(truth_shifted)        
  truth_reshaped = truth.reshape(1, len(truth), 1)    
  shifted_truth_reshaped = test_ouput.reshape(1, len(test_ouput), 1)  
  yes = Input(shape=(len(truth_reshaped),), name = 'truth_in')    
  recurrent = LSTM(20, return_sequences=True, name='recurrent')(yes)    
  TimeDistributed_output = TimeDistributed(Dense(1), name='test_pseudo')(recurrent)    
  model_built = Model(input=yes, output=TimeDistributed_output)    
  model_built.compile(loss='mse', optimizer='adam')    
  model_built.fit(truth_reshaped, shifted_truth_reshaped, nb_epoch=100)
  </code></pre>
  
  <p>How would I need to do to input the data correctly?</p>