Matrix 用Keras理解LSTM中的输入_形状参数

Matrix 用Keras理解LSTM中的输入_形状参数,matrix,machine-learning,keras,lstm,dimension,Matrix,Machine Learning,Keras,Lstm,Dimension,我试图使用名为“Stacked LSTM for sequence classification”(参见下面的代码)的方法进行序列分类,但无法在数据上下文中找出input\u shape参数 我有一个25个可能的字符组成的序列矩阵作为输入,这些字符以整数编码到一个最大长度为31的填充序列中。因此,我的x\u列车的形状为(1085420,31)意思是(n\u观察,序列长度) 在该代码中,x\U列的形状为(1000,8,16),与16个元素的8个阵列的1000个阵列的形状相同。在那里,我完全不知道什

我试图使用名为“Stacked LSTM for sequence classification”(参见下面的代码)的方法进行序列分类,但无法在数据上下文中找出
input\u shape
参数

我有一个25个可能的字符组成的序列矩阵作为输入,这些字符以整数编码到一个最大长度为31的填充序列中。因此,我的
x\u列车
的形状为
(1085420,31)
意思是
(n\u观察,序列长度)

在该代码中,x\U列的形状为
(1000,8,16)
,与16个元素的8个阵列的1000个阵列的形状相同。在那里,我完全不知道什么是什么,我的数据如何达到这个形状

看看Keras doc和各种教程以及问答,我似乎遗漏了一些明显的东西。有人能告诉我该找什么吗


谢谢你的帮助

因此,输入到
LSTM
的数据应具有形状
(样本数量、序列、特征)
。在您的情况下-因为您的特征向量只包含一个整数-您应该调整
X\u列的大小
应该具有形状
(1085420,31,1)
。由于此表示法不太适合神经网络-您应该:

  • 将表示更改为一种热编码-然后输出应具有形状
    (1085420,31,25)

  • 使用图层并保留
    (1085420,31)
    形状

  • from keras.models import Sequential
    from keras.layers import LSTM, Dense
    import numpy as np
    
    data_dim = 16
    timesteps = 8
    num_classes = 10
    
    # expected input data shape: (batch_size, timesteps, data_dim)
    model = Sequential()
    model.add(LSTM(32, return_sequences=True,
                   input_shape=(timesteps, data_dim)))  # returns a sequence of vectors of dimension 32
    model.add(LSTM(32, return_sequences=True))  # returns a sequence of vectors of dimension 32
    model.add(LSTM(32))  # return a single vector of dimension 32
    model.add(Dense(10, activation='softmax'))
    
    model.compile(loss='categorical_crossentropy',
                  optimizer='rmsprop',
                  metrics=['accuracy'])
    
    # Generate dummy training data
    x_train = np.random.random((1000, timesteps, data_dim))
    y_train = np.random.random((1000, num_classes))
    
    # Generate dummy validation data
    x_val = np.random.random((100, timesteps, data_dim))
    y_val = np.random.random((100, num_classes))
    
    model.fit(x_train, y_train,
              batch_size=64, epochs=5,
              validation_data=(x_val, y_val))