python深度学习在加载数据时num_words=10000是什么意思

python深度学习在加载数据时(num_words=10000)所代表的意义

首先写一段深度学习加载数据集的代码:

from keras.datasets import reuters
(train_data, train_labels), (test_data, test_labels) = reuters.load_data(num_words=10000)
#(train_data, train_labels), (test_data, test_labels) = reuters.load_data()

如代码中所示:第二行和第三行的差别在于load_data() 函数中的参数num_words=10000
解释: 参数(num_words=10000)将数据限定为前10000个最常出现的单词,如果数据集中存在大于10000的单词,则令其为2,看不太明白的话接着往下看。
用代码解释: 上面的代码中我用来举例的数据集是路透社数据集(reuters),该数据集中共包含8982条训练数据和其标签以及2246条测试数据和其标签,也就是说:

print(len(train_data))
输出:8982

要证明演示num_words=10000的作用,我找到了train_data中第1125条数据的第200个单词的单词编号为10003

print(train_data[1225][195:205])
输出1[190, 2636, 8, 268, 1648, 10003, 3027, 24, 4, 294]
输出2[190, 2636, 8, 268, 1648, 2, 3027, 24, 4, 294]

其中输出1:是没有设定num_words=10000 的输出结果
  输出2:是设定了参数num_words=10000 的输出结果
很显然:train_data中第1125条数据的第200个单词的单词编号为10003,超出了10000,因此在设置了参数num_words=10000之后,如输出2所示,将10003修改为了2

为什么是2呢(对2的解释)

在这类数据集中,每条数据本应该是单词组成的句子,但是用单词来表示一条样本输入到神经网络中并没有太大的意义,因此,将所有可能的单词按照使用的频繁程度建立一个单词字典。这样,一条样本就可以用一串数字编号表示。
其中0: 是为“padding”(填充)所保留的索引
  1: 是为“start of sequence”(序列开始)所保留的索引
  2: 是为“unknown”(未知词)所保留的索引
因此在设置了参数num_words=10000(数字编号不能超过10000) 之后,所有高于10000的单词编号都被用2(未知词) 所代替

  • 11
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值