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

《Python深度学习》中整数序列转二进制矩阵代码理解求助

解析:将整数序列编码为二进制矩阵的Python代码

嘿,我来帮你拆解这段IMDB数据预处理的代码,它本质上是做独热编码,把文本对应的整数序列转成神经网络能理解的数值格式~

函数基本说明

这段代码是《Python深度学习》里处理IMDB影评数据集的核心预处理函数,先看函数定义:

def vectorize_sequences(sequences, dimension=10000):
  • sequences:输入参数,是一个列表,每个元素是一条影评对应的单词索引序列(比如[1, 5, 23, 100],每个数字代表词汇表中某个单词的位置)
  • dimension=10000:默认参数,代表我们只保留词汇表中出现频率最高的10000个单词,这是IMDB数据集的标准预处理设定

第一步:初始化全零矩阵

results = np.zeros((len(sequences), dimension))

这里用numpy创建了一个二维全零数组:

  • 行数等于输入的影评条数(len(sequences)),每条影评对应一行
  • 列数等于词汇表大小10000,每个列对应一个单词
  • 初始全为0,因为一开始我们假设每条影评不包含任何单词,后面再把出现过的单词位置改成1

第二步:遍历填充二进制编码

for i, sequence in enumerate(sequences):
    results[i, sequence] = 1.  # 将results[i]的特定索引设为1

这部分是核心逻辑:

  • enumerate(sequences):同时拿到每条影评的索引i(对应矩阵的第i行)和这条影评的单词索引序列sequence
  • results[i, sequence] = 1.:这是numpy的高级索引技巧——直接把第i行中,所有在sequence里出现过的索引位置的值设为1。比如如果sequence是[3, 18, 200],那就是把第i行的第3、18、200列设为1,意思是这条影评包含这三个索引对应的单词。

这么做的原因?

深度学习模型没法直接处理整数序列,必须把数据转换成数值矩阵。这种独热编码的方式能让模型快速识别每条影评包含哪些单词(忽略单词出现的顺序,这是早期文本分类模型的常用思路),是喂入神经网络前的必要步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:50:17