一、IMDB数据集的介绍
电影评论IMDB数据集,包含来自电影数据库(IMDB)的50000两级分化的评论。我们在深度学习中采用其中的25000条评论作为训练集,剩下的25000条评论作为测试集。两个测试集都包含各50%的正面与负面评论,其中0代表负面,1代表正面。数据集已经内置于keras库,并且做过了预处理,其中的评论单词已经被转化为了整数序列,每个整数就映射到字典里的某个单词。每一条
首先看看IMDB数据集里的内容。在python中输入
from keras.datasets import imdb
(train_data,train_labels),(test_data,test_labels) = imdb.load_data(num_words = 10000)
首次加载需要几分钟的时间,其中num_words = 10000的含义是,我们只采用单词索引序列前10000个高频单词,以免将数据搞得过于庞大。加载完毕之后我们来看看里面的数据结构。
输入train_data[0]后发现显示的是一个整数list,查看他的长度,有218个数字,也就意味着这是一条有218个单词的评论。如果继续查询其他的评论字数,会发现数目不是相同的。
然后查看labels的内容。输入
train_labels[0]
在屏幕上显示 1,意味着第一条评论是正面评论。
二、数据的准备
数据输入的准备
要将数据输入到神经网络就要将数据做预先的处理,在这里,我们不能将输入层的节点数简简单单的定义为每条评论的单词个数,然后将单词索引作为输入。首先,每条评论的单词数目就不相同,很难做到节点数目上的确定,其次,每个单词的索引最大可为9999,如果将这些巨大的整数不做处理直接输入的话会大大降低神经网络的学习能力。因此我们考虑采用神经网络中常用的one-hot编码。
one-hot编码与普通的二进制编码有所区别,比如我们用4位二进制来编码3,二进制表示为0011,one-hot表示为0001。二进制不做解释,one-hot编码就是每一个数字就把从最左边开始(0)到最右边(3)一位置1其他的都置0。简单来说,数据最大为多少我们就用多少维的one-hot向量。
在这里我们用python代码来