【问题标题】:Why keras Tokenizer with unknown token requiring embedding's input_dim to be vocab_size +2, instead of vocal_size+1为什么带有未知令牌的keras Tokenizer需要嵌入的input_dim为vocab_size +2,而不是vocab_size+1
【发布时间】:2020-10-23 11:39:04
【问题描述】:

我正在使用 keras 嵌入和使用 Keras 标记器。起初,我没有使用 oov_token(用于未知令牌),并且我的标记器 word_counts 的长度为 54

对于embedding,我以前给my_tokenizer.word_counts+1input_dim,后来我需要处理未知的token,所以我把我的代码改成following

my_tokenizer = Tokenizer(oov_token="<UKN>") # First it was Tokenizer()    
my_tokenizer.fit_on_texts(my_tokens)
my_sequences = module_tokenizer.texts_to_sequences(my_tokens)

但是在将未知令牌(索引 1 为 {'&lt;UNK':1,..} )与 my_tokenizer.word_counts+1 添加为 input_dim 之后,我得到了类似索引的错误

55 not in indices [0,55]

我的 word_count(my_tokenizer.word_counts+1) 是 55(比上一个方法多一个(54),没有未知令牌)。

现在,如果我在我的词汇量 (my_tokenizer.word_counts) 中添加 2,它可以正常工作

layers.Embedding( my_tokenizer.word_counts+2 , ... )

但我不明白为什么我需要添加 2(设为 56

非常感谢您的帮助

【问题讨论】:

    标签: python keras nlp tokenize embedding


    【解决方案1】:

    您需要为 OOV 令牌添加 +2,正如您所提到的,还有填充。

    【讨论】:

    • You answer gave me hint and I realised that I am using len(my_tokenizer.word_counts) which was only giving 54 as had no count, so pretty stupid of me,
    猜你喜欢
    • 2021-06-17
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    相关资源
    最近更新 更多