我正在尝试将自己的数据结构传递给Keras中的LSTM层,但模型的训练很早就失败了。
我打算创建一个固定长度的序列并接收相同大小的输出序列。目前,顺序如下:
[0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3]
这是一个列表,然后我使用np.array()将其转换为np数组。标签序列的构建类似。总共,我有8000个这样的序列,所有这些序列的长度都是12。
在我的Keras模型中,LSTM是第一层。这需要我将数据的输入形状传递给模型。我试过填写几种形状,但无济于事。为了完整起见,这些是我模型的前两行:
model = Sequential()
model.add(LSTM(100, input_shape=(8000, 12)))
model.add(Dense(nb_classes))
model.add(Activation('softmax'))
在训练期间我遇到了一些麻烦,我遇到this帖子。它看起来与我想做的非常相似。我已经尝试过提供的解决方案,但不知何故,配件仍然崩溃。我收到以下错误:
ValueError: Error when checking input: expected lstm_1_input to have 3 dimensions, but got array with shape (8000, 12)
有什么想法吗?
更新: 对于Parthosarathi Mukherjee,我添加了网络的其余部分。
答案 0 :(得分:0)
model.add(LSTM(100, input_shape(8000, 12)))
改为使用
model.add(LSTM(100, input_shape(12,1)))
确保在适合之前,您的输入数据的形状 8000 x 12 x 1 而不是 8000 x 12