我正在建立许多LSTM来预测时间序列。
原始时间序列数据形状:nx23
'ATTCG' 'ATGCC' ... 'ATGCA'
'ATGTG' 'ATTGC' ... 'AATGA'
...
'ATTCG' 'ATGCC' ... 'ATGCA'
我已经处理了数据,以使一个数据点的时间窗口为3。处理后的数据用于时间序列预测形状nx3x5x4
。因此,每个数据点的最终形状为(no of time steps x number of character in seq x no of unique characters)
x y
3X5X4 3X5X4
3X5X4 3X5X4
...
3X5X4 3X5X4
我需要在每个时间点输出5x4,以便对照y(一个热编码序列)进行检查。我考虑过以以下方式实现它,但是由于(5x4)
形状而导致输出形状不正确并且出现严重错误。
model.add(LSTM(units=(5x4), input_shape=(3,(5x4)), return_sequences=True))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.summary()
但是,如果我弄平onehot编码的序列,我的数据将采用以下形式。
x y
3X20 3X20
3X20 3X20
...
3X20 3X20
并且LSTM模型可以完美运行。
model.add(LSTM(units=20, input_shape=(3,20), return_sequences=True))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.summary()
但是此模型提供了3x20的暗淡输出,我无法在上面输出softmax。
任何建议如何获得可叠加softmax的5x4输出的方法都会有很大帮助。
谢谢。