为什么在嵌入层('Embedding(V+1,D)(i)')中V+1,其中V是词汇量?

Why V+1 in Embedding layer(`Embedding(V+1,D)(i)`) where V the vocabulary size?

提问人:ShoutOutAndCalculate 提问时间:11/17/2023 更新时间:11/17/2023 访问量:11

问:

假设

from tensorflow.keras.preprocessing.text import Tokenizer
tokenizer = Tokenizer()
...
V = len(tokenizer.word_index)

词汇量在哪里。V

有人告诉我,嵌入层

x = Embedding(V+1,D)(i)

其中,输出向量的维度。但是我不确定为什么嵌入层的大小必须是 而不是 ,特别是因为索引的起点是 而不是 ,即D(V+1,D)(V,D)tokenizer.word_index10

tokenizer.word_index
{'UNK': 1,
 'the': 2,
 ',': 3,
 '.': 4,
 'of': 5,
 'and': 6, 
...}

所以(字典)的最大索引(如果转换为列表)实际上是。tokenizer.word_indexV-1

为什么在嵌入layer()中词汇量大?V+1Embedding(V+1,D)(i)V

Python TensorFlow 形状词 嵌入

评论

0赞 ShoutOutAndCalculate 11/20/2023
tensorflow.org/api_docs/python/tf/keras/layers/Embedding 例子。

答:

1赞 JaimeBee 12/12/2023 #1

主要原因是词汇表大小必须比 len(word_index) 高一个单位,才能索引到最大的标记 ID。 在以下链接中阅读更多详细信息(至少还有一个原因): https://datascience.stackexchange.com/questions/93651/reason-for-adding-1-to-word-index-for-sequence-modeling