2

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

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

输出是一个有 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 个时间步外,基本上全为零。

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

4

1 回答 1

1

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

于 2017-08-18T02:21:51.020 回答