Keras 如何为多对一二进制分类LSTM准备数据?

Keras 如何为多对一二进制分类LSTM准备数据?,keras,time-series,classification,lstm,many-to-one,Keras,Time Series,Classification,Lstm,Many To One,我有一个38000名不同患者的时间序列数据集,包括他们48小时的生理数据和30个特征,因此每个患者有48行(每小时)和一个二元结果(0/1),仅在第48小时结束时,总训练集是(38000*48=1824000)行 据我所知,这是一个多对一LSTM二元分类,因此我的输入形状应该是(38000,48,30)(样本大小、时间步长、特征),并且返回序列应该设置为False以仅返回最后一个隐藏神经元的输出吗 有人能回顾一下我对这件事的理解吗 谢谢。是的,你基本上是对的: 输入的形状=(患者,48,30)

我有一个38000名不同患者的时间序列数据集,包括他们48小时的生理数据和30个特征,因此每个患者有48行(每小时)和一个二元结果(0/1),仅在第48小时结束时,总训练集是
(38000*48=1824000)

据我所知,这是一个多对一LSTM二元分类,因此我的输入形状应该是
(38000,48,30)(样本大小、时间步长、特征)
,并且返回序列应该设置为False以仅返回最后一个隐藏神经元的输出吗

有人能回顾一下我对这件事的理解吗


谢谢。

是的,你基本上是对的:

  • 输入的形状=
    (患者,48,30)
  • 目标形状=
    (患者,1)

您应该在最后一个LSTM层中使用
return\u sequences=False
。(如果您在最后一次LSTM之前有更多的重复层,请在其中保留
return\u sequences=True

是的,大部分情况下您的思路是正确的。请参阅下面的代码以更好地理解这一点

from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from keras.layers import Bidirectional
from keras.metrics import binary_crossentropy

# vocab size
total_features = 30
no_of_pateints = 38,000
time_steps = 48


model = Sequential()

# you can also use Bidirectional layer to speed up the learning and reduce 
# training time and here you can keep return_sequence as true
# model.add(
    Bidirectional(LSTM(
        units=100, 
        input_shape=(no_of_patients, time_steps, total_features), 
        return_sequences=True
    )))
# return_sequence should be False if there is only one LSTM layer. Otherwise in case of multiple layers, 
the last layers should have return_sequence as False
model.add(LSTM(
    units=100, 
    input_shape=(no_of_patients, time_steps, total_features), 
    return_sequences=False 
    ))
model.add(Dense(2, activation='softmax'))
model.compile(
    loss=binary_crossentropy,
    optimizer='rmsprop',
    metrics=['accuracy']
)

如果您对上述代码有任何疑问或需要更多解释,请告诉我

嘿,非常感谢!“我会应用它的。@AnushaPrakash,如果它对你有效,请接受它作为答案。”。所以它也可以帮助其他人。@Abinav Anand是的,当然。另外,因为我想要二元类的概率,我会将输出神经元的数量从2改为1,并将激活改为sigmoid。听起来合理吗?@AnushaPrakash很抱歉,fpr的回复太晚了,但是你需要将输出神经元保持在2,因为你想看到的是两个输出类的概率,而不仅仅是一个。在分类问题的情况下,我个人的偏好是将softmax保留为激活状态,但这完全取决于您。是的,我可以这样做,并检查哪个最适合我的问题。谢谢。是的,我计划使用不止一个循环层。谢谢!:)