Keras嵌入层能给出某个索引(例如:1)的随机向量而不是固定的吗

2024-06-16 11:42:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个问题,我有文本(可以很长,最多9000字),我需要嵌入与Keras层。我为每个文本选择固定大小5000,我需要填充每个序列以获得正确的形状。经典的方法是使用Keras的pad\u序列作为索引列表的输入,并用零填充或将索引列表削减到5000。 对于我的下游任务,我使用了一种受Kim论文(https://arxiv.org/abs/1408.5882)启发的convnet。我担心的是,网络在某种意义上通过检测嵌入我用来填充序列的0的向量模式来学习字数。我不是说这个功能不重要,但我想强迫网络学习其他功能的首选项。我考虑了两件事,首先是使用一个额外的任务(比如对抗性任务),在输出之前使用模型创建的潜在表示,然后使用模型的一个分支来预测文本的大小或大小的簇,例如:

[,1000 words] -- cluster 1
[1001,2000words] -- cluster 2
 ect..

然后使用输出鼓励网络通过在主损失项中添加对抗性损失来映射潜在空间中的其他信息。我的另一个想法是,我们可以使用随机向量,在训练过程中动态生成,而不是使用零向量来填充(每次网络看到一个特定的索引(例如-1),它就知道必须生成一个随机向量)。我认为它打破了使用零向量引入的对称性,并且有助于模型更好地推广,因为它在训练过程中引入了噪声

由于我没有找到任何关于用零以外的东西填充这个任务的论文,我转向社区。你怎么认为?我经历了嵌入层的实现,我非常确定第二个想法的实现在keras中非常简单,通过为正确的索引更改K.gather()标志(尽管执行时间会更长)

提前感谢您的反馈和资源


Tags: 方法模型文本功能网络列表过程序列