如何设计多对多 LSTM?

数据挖掘 lstm
2022-03-07 11:32:18

我有一个形状为 (1000,20, 4) 的输入数组和一个形状为 (1000,25,1) 的输出(标签)。但是不知道如何使用 Keras LSTM 库为此构建顺序模型!

有人可以帮我设计一个简单的 LSTM 吗?(我尝试以多种方式使用RepeatVector()and TimeDistributed(Dense()),但出现如下错误:

model = Sequential()
model.add(LSTM(units = un , input_shape = (20, 4), return_sequences = False)) 
model.add(RepeatVector(25))  
model.add(LSTM(un , return_sequences=True))
model.add(TimeDistributed(Dense(20))) 

ValueError:检查目标时出错:预期 lstm_419 的形状为 (25, 20) 但得到的数组的形状为 (25, 1)

1个回答

标签数组的形状为 (25, 1)。您之前的模型的形状是 ( 25 , 20 )。维度 20 是因为这条线。

model.add(TimeDistributed(Dense(20)))

Dense层有一个units=参数形式的输出维度为 20。25 是序列的长度。

因此,在 25 个时间步中的每一个上,都进行了Dense层操作,并且每个都生成了一个形状数组 (20 , )。这个过程发生了 25 个时间步,最终输出形状为 (25, 20)。

RepeatVector:它重复输入向量给它n的次数。

Timedistributed:为给定输入序列中的每个时间步执行包含在其中的层操作(在您的情况下是Denselayer )。

要了解有关上述层的更多信息,请参阅我的这个答案

因此,在最后一层更改Dense( 20 )Dense( 1 )将纠正矢量维度。