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

为何Keras的one_hot函数输出整数索引而非含0的独热编码向量?

关于Keras one_hot函数与独热编码的疑问

先看你给出的代码示例:

from tensorflow.keras.preprocessing.text import one_hot
vocab_size = 5
one_hot('good job', vocab_size)
Out[6]: [3, 2]

问题1:独热编码是否应始终生成由1和0组成的向量?

严格来说,标准独热编码的输出确实是仅包含0和1的向量——每个类别对应向量中的一个位置,该位置设为1,其余全为0。但在实际工程场景里,大家常把“整数索引编码”也看作独热编码的简化形式,因为它是独热向量的压缩表示,后续可以很轻松转换成标准的独热向量。

问题2:为何Keras的one_hot函数未输出含0的结果?

Keras的one_hot函数本质是个哈希式整数索引生成工具,它的核心作用是把每个单词映射到[1, vocab_size]范围内的整数(注意是从1开始,不是0),而非直接生成标准独热向量。这么设计的原因很实际:

  • 省内存:如果词汇量很大,存储独热向量会占用海量空间,而整数索引只需要存单个数字,空间效率高很多
  • 后续流程兼容:Keras里有专门的to_categorical函数,或者直接用Embedding嵌入层,都能把这些整数索引快速转换成独热向量或者更高效的词嵌入,完全不需要提前生成占空间的独热向量
  • 哈希碰撞处理:这个函数用哈希映射单词到索引,当不同单词哈希到同一个整数时会自动处理,但核心逻辑还是输出索引而非向量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 10:01:41