Keras 多对一LSTM,多类分类

Keras 多对一LSTM,多类分类,keras,lstm,many-to-one,rnn,Keras,Lstm,Many To One,Rnn,我正在训练一个有64个隐藏单位的LSTM-RNN。我的数据如下: 输入:具有维度(170000、50500)->的numpy数组(示例、时间步长、功能数量) 输出:带尺寸的numpy数组(170000,10) 输出是一个具有10个类的分类变量(例如,类1对应于向量[1,0,0,0,0,0,0,0]) 到目前为止,我已经尝试了这段代码,但是出现了一个错误,指出密集层应该有一个3D输入 model = Sequential() model.add(LSTM(64, input_shape=(50,

我正在训练一个有64个隐藏单位的LSTM-RNN。我的数据如下:

输入:具有维度(170000、50500)->的numpy数组(示例、时间步长、功能数量)
输出:带尺寸的numpy数组(170000,10)

输出是一个具有10个类的分类变量(例如,类1对应于向量[1,0,0,0,0,0,0,0])

到目前为止,我已经尝试了这段代码,但是出现了一个错误,指出密集层应该有一个3D输入

model = Sequential()
model.add(LSTM(64, input_shape=(50, 500), return_sequences=True,dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(units = 10,activation='sigmoid'))
model.compile(loss='categorical_crossentropy', optimizer='adam')
model.fit(input, output, epochs=1, batch_size=64)
唯一有效的方法是改变输出,使其具有以下形式:(170000,50,10),除了第50个时间步外,基本上都是零


这是正确的方法吗?如果是的话,有没有更有效的方法?我担心的是,扩展输出的形状可能会降低代码的效率。

您所要做的就是将
return\u sequences=True
更改为
return\u sequences=False
。此外,如果每个项目只能放在一个类中,则需要将输出层中的激活函数更改为
activation='softmax'