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))
手机unknown是什么意思输出: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(未知词) 所代替
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论