我正在尝试训练具有 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 个时间步外,基本上全为零。
这是一个正确的方法吗?如果是这样,有没有更有效的方法?我担心扩展输出的形状可能会使代码效率降低。