【问题标题】:Many to one LSTM, multiclass classification多对一 LSTM,多类分类
【发布时间】:2018-01-26 10:06:45
【问题描述】:

我正在尝试训练具有 64 个隐藏单元的 LSTM-RNN。我的数据如下:

输入: numpy 数组,维度为 (170000, 50, 500) ->(示例、时间步长、特征数)
输出: numpy 数组尺寸 (170000, 10)

输出是一个有 10 个类别的分类变量(例如,类别 1 对应于向量 [1,0,0,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 个时间步外,基本上全为零。

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

【问题讨论】:

    标签: keras lstm many-to-one rnn


    【解决方案1】:

    您只需将return_sequences=True 更改为return_sequences=False。此外,如果每个项目只能适合一个类,则需要将输出层中的激活函数更改为 activation='softmax'

    【讨论】:

      猜你喜欢
      • 2018-03-08
      • 1970-01-01
      • 2019-06-24
      • 2021-05-04
      • 2021-12-20
      • 2023-04-05
      • 2023-03-22
      • 2021-06-04
      • 2021-04-27
      相关资源
      最近更新 更多