gpt4 book ai didi

python - 使用 Keras LSTM 进行多对多分类

转载 作者:行者123 更新时间:2023-11-30 08:51:56 29 4
gpt4 key购买 nike

我对 Keras 中的 RNN/LSTM 不熟悉,需要有关是否/如何将它们用于我的问题(多对多分类)的建议。

我有许多时间序列:大约 1500 个“运行”,每个运行大约 100-300 个时间步长,并且有多个 channel 。我知道我需要将数据补零到最大时间步数,因此我的数据如下所示:

[nb_samples, timesteps, input_dim]: [1500, 300, 10]

由于即使对于人类来说,在不知道过去的情况下获得单个时间步长的标签也是不可能的,所以我可以进行特征工程并训练经典分类算法,但是,我认为 LSTM 很适合这里。 This answer告诉我,对于 Keras 中的多对多分类,我需要将 return_sequences 设置为 True。但是,我不太明白如何从这里继续 - 我是否使用返回序列作为另一个正常层的输入?如何将其连接到我的输出层?

非常感谢任何帮助、提示或教程链接 - 我发现了很多用于多对一分类的东西,但对于多对多分类没有什么好处。

最佳答案

可以有多种方法来实现此目的,我将指定哪种方法最适合您的问题。

如果您想堆叠两个LSTM层,那么return-seq可以帮助学习另一个LSTM层> 图层如下例所示。

from keras.layers import Dense, Flatten, LSTM, Activation
from keras.layers import Dropout, RepeatVector, TimeDistributed
from keras import Input, Model

seq_length = 15
input_dims = 10
output_dims = 8 # number of classes
n_hidden = 10
model1_inputs = Input(shape=(seq_length,input_dims,))
model1_outputs = Input(shape=(output_dims,))

net1 = LSTM(n_hidden, return_sequences=True)(model1_inputs)
net1 = LSTM(n_hidden, return_sequences=False)(net1)
net1 = Dense(output_dims, activation='relu')(net1)
model1_outputs = net1

model1 = Model(inputs=model1_inputs, outputs = model1_outputs, name='model1')

## Fit the model
model1.summary()


_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_1 (InputLayer) (None, 15, 10) 0
_________________________________________________________________
lstm_1 (LSTM) (None, 15, 10) 840
_________________________________________________________________
lstm_2 (LSTM) (None, 10) 840
_________________________________________________________________
dense_3 (Dense) (None, 8) 88
_________________________________________________________________
  • 另一种选择是您可以使用完整的返回序列作为下一层的特征。在这种情况下,创建一个简单的Dense层,其输入将为[batch, seq_len*lstm_output_dims]
  • 注意:这些特征对于分类任务很有用,但大多数情况下,我们使用堆叠的 lstm 层并使用其输出不带完整序列作为分类层的特征。

    This答案可能有助于理解用于不同目的的 LSTM 架构的另一种方法。

    关于python - 使用 Keras LSTM 进行多对多分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54457016/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com