如果我必须使用预训练的词向量作为神经网络(例如CNN)的嵌入层,该如何处理索引0?
详细信息:
我们通常从创建零个numpy二维数组开始。稍后,我们从词汇表中填充单词索引。 问题是,0已经是我们词汇表中另一个单词的索引(例如,“ i”是0处的索引)。因此,我们基本上是在初始化填充有“ i”而不是空词的整个矩阵。那么,如何处理所有长度相等的句子的填充呢?
一个简单的弹出窗口就是我们可以使用另一个digit = numberOfWordsInVocab + 1进行填充。但这不会占用更多的空间吗? [帮帮我!]
答案 0 :(得分:1)
一个简单的弹出窗口就是我们可以使用另一个digit = numberOfWordsInVocab + 1进行填充。但这不会占用更多的空间吗?
不!大小一样。
a=np.full((5000,5000), 7)
a.nbytes
200000000
b=np.zeros((5000,5000))
b.nbytes
200000000
编辑:错字
答案 1 :(得分:0)
如果我必须使用预训练的词向量作为Neural中的嵌入层 网络(例如CNN),如何处理索引0?
答案
通常,可以通过模型和目标的加权成本来处理空条目。 但是,在处理单词和顺序数据时,可能会有些棘手,需要考虑几件事。让我们做一些假设并加以处理。
假设
max_lenght
个单词。详细信息
n
个连续单词对应n
行)。因此,查找(哈希)表的速度明显更快,并且可以从嵌入矩阵中选择行(用于行向量)。任务
建议
i=i+1
,并且嵌入矩阵的位置0处应有新行。max_length
的样本将这些条目的成本加权为0。也就是说,如果我们有单词标记[0,5,6,2,178,24,0,NaN,NaN]
的序列,则相应的权重向量为[1,1,1,1,1,1,1,0,0]
1
和N
字,N
大)。在复杂性方面,可以稍后将其合并到初始标记化功能中。预测和模型的复杂性是一个更大的问题,也是系统的重要要求。