Python 输入形状的Keras LSTM输入形状错误

Python 输入形状的Keras LSTM输入形状错误,python,keras,keras-layer,Python,Keras,Keras Layer,我在使用Keras的时间序列时遇到以下错误: ValueError: Error when checking input: expected lstm_1_input to have 3 dimensions, but got array with shape (31, 3) 这是我的职责: def CreateModel(shape): """Creates Keras Model. Args: shape: (set) Dataset shape. Example: (3

我在使用Keras的时间序列时遇到以下错误:

ValueError: Error when checking input: expected lstm_1_input to have 3 dimensions, but got array with shape (31, 3)
这是我的职责:

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
主要代码:

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)
完全错误:

Traceback (most recent call last):
  File "<embedded module '_launcher'>", line 149, in run_filename_as_main
  File "<embedded module '_launcher'>", line 33, in _run_code_in_main
  File "model.py", line 300, in <module>
    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)
但我得到:

ValueError: Input 0 is incompatible with layer lstm_1: expected ndim=3, found ndim=4
如果你的原始数据是(31,3),那么我认为你要找的是一个训练。你可以通过下面的一行得到

training\u features=training\u features.重塑(-1,3,1)

这将简单地向现有数据添加一个新的轴(1只是告诉numpy使用原始数据中的值来计算这个维度)

您还需要修复模型的输入形状。31应该是数据中的样本数。这不包括在Keras
input\u shape
参数中。你应该使用

model.add(LSTM(4,input_-shape=(3,1)))

Keras将自动将批次大小设置为
None
,这意味着任何数量的样本都将与模型一起工作

ValueError: Input 0 is incompatible with layer lstm_1: expected ndim=3, found ndim=4