Matrix 用Keras理解LSTM中的输入_形状参数
我试图使用名为“Stacked LSTM for sequence classification”(参见下面的代码)的方法进行序列分类,但无法在数据上下文中找出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个阵列的形状相同。在那里,我完全不知道什
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))