我有一个顺序数据集,由两个不同类型的事件(例如A和B事件)组成,对于这些事件,特征向量具有不同的大小,即所有A事件均用 a 维描述特征向量,而所有B事件均用 b 维特征向量a!= b描述。
请注意,这与可变大小的序列无关(尽管在这里也可能如此),而是关于由可变大小的向量组成的序列。
我的问题是如何在喀拉拉邦设置RNN(LSTM),以便从此类序列中学习?
我不想将其简化为分别针对A和B事件训练两个不同的RNN,因为我需要保持事件{A1,A2,B1,A3,B2,...}的顺序性质。 / p>
这是因为如果我需要一个RNN模型与条件输入形状,是(无,a)如果x属于A和(无,b)在其他。
我想知道 backend.switch 或类似的方法是否可以实现这一目标。
答案 0 :(得分:0)
我能够通过以下方式做到这一点:
我首先将原始序列复制为两个序列,在每个序列中,我用零个向量替换了另一种类型的事件,这些向量的长度与该序列中保留的事件的长度相同,因此所有时间步均具有相同的特征向量长度。我还为每个序列计算了掩码。
然后我以相同的输出长度 c 在每个序列上分别应用TimeDistributed密集层,并将每个密集层的输出乘以相应的蒙版。
最后,我将两个序列(在元素方面)加在一起。 这导致在公共空间c中恢复了原始异质序列的同质版本,然后可以将其输入LSTM层。