title: Keras LSTM input shape error for input shape
body: <p>I'm getting this error when using Time Series with Keras:</p>
  
  <pre><code>ValueError: Error when checking input: expected lstm_1_input to have 3 dimensions, but got array with shape (31, 3)
  </code></pre>
  
  <p>This is my function:</p>
  
  <pre><code>def CreateModel(shape):
    """Creates Keras Model.
  
    Args:
      shape: (set) Dataset shape. Example: (31,3).
  
    Returns:
      A Keras Model.
  
    Raises:
      ValueError: Invalid shape
    """
  
    if not shape:
      raise ValueError('Invalid shape')
  
    logging.info('Creating model')
    model = Sequential()
    model.add(LSTM(4, input_shape=(31, 3)))
    model.add(Dense(1))
    model.compile(loss='mean_squared_error', optimizer='adam')
    return model
  </code></pre>
  
  <p>Main code:</p>
  
  <pre><code>print(training_features.shape)
  model = CreateModel(training_features.shape)
  model.fit(
        training_features,
        training_label,
        epochs=FLAGS.epochs,
        batch_size=FLAGS.batch_size,
        verbose=FLAGS.keras_verbose_level)
  </code></pre>
  
  <p>Complete error:</p>
  
  <pre><code>Traceback (most recent call last):
    File "&lt;embedded module '_launcher'&gt;", line 149, in run_filename_as_main
    File "&lt;embedded module '_launcher'&gt;", line 33, in _run_code_in_main
    File "model.py", line 300, in &lt;module&gt;
      app.run(main)
    File "absl/app.py", line 433, in run
      _run_main(main, argv)
    File "absl/app.py", line 380, in _run_main
      sys.exit(main(argv))
    File "model.py", line 274, in main
      verbose=FLAGS.keras_verbose_level)
    File "keras/models.py", line 960, in fit
      validation_steps=validation_steps)
    File "keras/engine/training.py", line 1581, in fit
      batch_size=batch_size)
    File "keras/engine/training.py", line 1414, in _standardize_user_data
      exception_prefix='input')
    File "keras/engine/training.py", line 141, in _standardize_input_data
      str(array.shape))
  ValueError: Error when checking input: expected lstm_1_input to have 3 dimensions, but got array with shape (31, 3)
  </code></pre>
  
  <p>Code originally from <a href="https://machinelearningmastery.com/time-series-prediction-with-deep-learning-in-python-with-keras/" rel="nofollow noreferrer">here</a></p>
  
  <p>I have tried:</p>
  
  <pre><code>training_features = numpy.reshape(
        training_features,
        (training_features.shape[0], 1, training_features.shape[1]))
  </code></pre>
  
  <p>But I get:</p>
  
  <pre><code>ValueError: Input 0 is incompatible with layer lstm_1: expected ndim=3, found ndim=4
  </code></pre>