You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keras中one_hot函数为何对不同单词生成相同编码?

Keras one_hot函数出现重复编码的原因分析

Keras的one_hot函数之所以会让不同单词生成相同编码,核心原因是哈希冲突。

具体原理

one_hot的工作逻辑是:

  • 先对每个输入单词计算哈希值
  • 再将哈希值对指定的vocab_size取模,得到最终的编码整数

当两个不同单词的哈希值对vocab_size取模后结果一致时,就会出现重复编码的情况。你的代码里vocab_size应该设置得比较小(比如50),而语料中的唯一单词数量接近或超过这个值,自然更容易触发哈希冲突,导致'amazing'和'too'都被映射到48。

解决办法

如果需要每个单词对应唯一编码,推荐使用Keras的Tokenizer类,它会为每个唯一单词分配专属ID,从根源上避免哈希冲突:

from tensorflow.keras.preprocessing.text import Tokenizer

reviews = ['nice food',
        'amazing restaurant',
        'too good',
        'just loved it!',
        'will go again',
        'horrible food',
        'never go there',
        'poor service',
        'poor quality',
        'needs improvement']

tokenizer = Tokenizer()
tokenizer.fit_on_texts(reviews)
encoded_reviews = tokenizer.texts_to_sequences(reviews)

# 查看单词与唯一ID的映射关系
print(tokenizer.word_index)

内容的提问来源于stack exchange,提问作者john doe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 06:12:02