Error when checking model input: expected lstm_1_input to have 3 dimensions, but got array with shape (339732, 29)

℡╲_俬逩灬. 提交于 2019-11-27 13:59:49
Saurav--

Setting timesteps = 1 (since, I want one timestep for each instance) and reshaping the X_train and X_test as:

import numpy as np
X_train = np.reshape(X_train, (X_train.shape[0], 1, X_train.shape[1]))
X_test = np.reshape(X_test, (X_test.shape[0], 1, X_test.shape[1]))

This worked!

For timesteps != 1, you can use the below function (adapted from here)

import numpy as np
def create_dataset(dataset, look_back=1):
  dataX, dataY = [], []
  for i in range(len(dataset)-look_back+1):
    a = dataset[i:(i+look_back), :]
    dataX.append(a)
    dataY.append(dataset[i + look_back - 1, :])
  return np.array(dataX), np.array(dataY)

Examples

X = np.reshape(range(30),(3,10)).transpose()
array([[ 0, 10, 20],
       [ 1, 11, 21],
       [ 2, 12, 22],
       [ 3, 13, 23],
       [ 4, 14, 24],
       [ 5, 15, 25],
       [ 6, 16, 26],
       [ 7, 17, 27],
       [ 8, 18, 28],
       [ 9, 19, 29]])

create_dataset(X, look_back=1 )
(array([[[ 0, 10, 20]],
       [[ 1, 11, 21]],
       [[ 2, 12, 22]],
       [[ 3, 13, 23]],
       [[ 4, 14, 24]],
       [[ 5, 15, 25]],
       [[ 6, 16, 26]],
       [[ 7, 17, 27]],
       [[ 8, 18, 28]],
       [[ 9, 19, 29]]]),
array([[ 0, 10, 20],
       [ 1, 11, 21],
       [ 2, 12, 22],
       [ 3, 13, 23],
       [ 4, 14, 24],
       [ 5, 15, 25],
       [ 6, 16, 26],
       [ 7, 17, 27],
       [ 8, 18, 28],
       [ 9, 19, 29]]))

create_dataset(X, look_back=3)
(array([[[ 0, 10, 20],
        [ 1, 11, 21],
        [ 2, 12, 22]],
       [[ 1, 11, 21],
        [ 2, 12, 22],
        [ 3, 13, 23]],
       [[ 2, 12, 22],
        [ 3, 13, 23],
        [ 4, 14, 24]],
       [[ 3, 13, 23],
        [ 4, 14, 24],
        [ 5, 15, 25]],
       [[ 4, 14, 24],
        [ 5, 15, 25],
        [ 6, 16, 26]],
       [[ 5, 15, 25],
        [ 6, 16, 26],
        [ 7, 17, 27]],
       [[ 6, 16, 26],
        [ 7, 17, 27],
        [ 8, 18, 28]],
       [[ 7, 17, 27],
        [ 8, 18, 28],
        [ 9, 19, 29]]]),
array([[ 2, 12, 22],
       [ 3, 13, 23],
       [ 4, 14, 24],
       [ 5, 15, 25],
       [ 6, 16, 26],
       [ 7, 17, 27],
       [ 8, 18, 28],
       [ 9, 19, 29]]))
Ashok Kumar Jayaraman

Reshape input for LSTM:

X = array([[10, 20, 30], [40, 50, 60], [70, 80, 90]])
X_train = X.reshape(1, 3, 3) # X.reshape(samples, timesteps, features)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!