Nig*_* Ng 4 python nlp deep-learning keras keras-layer
在Embedding https://keras.io/layers/embeddings/的Keras文档中,给出的解释mask_zero是
mask_zero:输入值0是否是应该被屏蔽掉的特殊"填充"值.当使用可能需要可变长度输入的循环层时,这很有用.如果这是True,则模型中的所有后续层都需要支持屏蔽,否则将引发异常.如果mask_zero设置为True,那么索引0不能在词汇表中使用(input_dim应该等于|词汇| + 2).
为什么input_dim需要2 + +词汇表中的单词数量?假设0被屏蔽并且无法使用,它不应该只是1 +字数吗?另外一个额外条目是什么?
我相信这些文档在那里有点误导.在正常情况下,您将n输入数据索引映射[0, 1, 2, ..., n-1]到向量,因此您input_dim应该拥有与您一样多的元素
input_dim = len(vocabulary_indices)
Run Code Online (Sandbox Code Playgroud)
一个相当(但有点令人困惑)的方式来说这个,以及文档的方式,就是说
1 +输入数据中出现的最大整数索引.
input_dim = max(vocabulary_indices) + 1
Run Code Online (Sandbox Code Playgroud)
如果启用屏蔽,0则会以不同的方式处理值,因此您将n索引增加1:[0, 1, 2, ..., n-1, n]因此您需要
input_dim = len(vocabulary_indices) + 1
Run Code Online (Sandbox Code Playgroud)
或者
input_dim = max(vocabulary_indices) + 2
Run Code Online (Sandbox Code Playgroud)
正如他们所说,这里的文档特别令人困惑
(input_dim应该相等
|vocabulary| + 2)
我将其解释|x|为集合的基数(相当于len(x)),但作者似乎意味着
2 +输入数据中出现的最大整数索引.