2017-04-05 73 views
2

在Keras文檔爲Embeddinghttps://keras.io/layers/embeddings/,對於mask_zero給出的解釋是Keras嵌入圖層蒙版。爲什麼input_dim需要|詞彙| + 2?

mask_zero:是否輸入值0是應該屏蔽掉一個特殊的「填充」值。當使用可能需要可變長度輸入的重複圖層時,這很有用。如果這是真的,那麼模型中的所有後續層都需要支持遮罩,否則會引發異常。如果mask_zero設置爲True,則結果是,索引0不能用在詞彙表中(input_dim應該等於|詞彙| + 2)。

爲什麼input_dim需要2 +詞彙中的詞數?假設0被屏蔽並且不能被使用,不應該只是1 +多少字?什麼是其他額外的條目?

回答

4

我相信這裏的文檔有點誤導。在正常情況下,你映射你的n輸入數據索引[0, 1, 2, ..., n-1]載體,所以你必須

input_dim = len(vocabulary_indices) 

的等效(但稍顯混亂)的方式來表達這個你input_dim應該是儘可能多的元素,和路docs do,就是說

1 +輸入數據中出現的最大整數索引。

input_dim = max(vocabulary_indices) + 1 

如果啓用屏蔽,價值0是區別對待的,所以您可以通過一個增加你的n指數:[0, 1, 2, ..., n-1, n],因此你需要

input_dim = len(vocabulary_indices) + 1 

或可替代

input_dim = max(vocabulary_indices) + 2 

文檔變得特別令人困惑,因爲他們說

(input_dim應等於|vocabulary| + 2

我想去解釋|x|作爲一組(相當於len(x))的基數,但作者似乎意味着

2 +最大整數索引發生在輸入數據中。

+0

我明白了。這就說得通了。感謝您的徹底解答!我想知道我們是否可以提交Keras文檔的請求,以減少誤導。 –

+0

[我確實](https://github.com/fchollet/keras/pull/6157):-) –

1

因爲input_dim已經是詞彙的+1了,所以你只需爲0添加另一個+1並獲得+2。

input_dim:int> 0詞彙大小,即。 1 +最大整數 索引發生在輸入數據中。