电影评论数据是tensorflow的内置数据
目录
1 导入库
2 导入数据集
- 如果第一次使用会自动下载
我们看一下这个数据集的大致情况
得知了有25000个数据,其余情况不了解
我们取x_train的第0号数据看一下
我们可以看出,这是一组脱敏数据,上面的数字都对应着一个单词,也就是说我们的x_train数据把数字对应字符转换过来,它是一段话
- 也可能是一个数值对应的是一个字符,具体是什么我们就无从得知了
我们发现在上面这个整形列表中,有少量的5位数数据,如果我们要令这些数据都参与训练,那么我们训练的数据是非常庞大的(因为机器要对每一个索引都进行学习,比如说之前的数据集有3w个词,那么它就得学习3w个词,但是这些其实是少量存在的,所以我们就不要求对这些少量词进学习)
所以我们要定义一个最大值来减少单词量,我们重新读取一下数据
我们再看一下第0个训练元素
发现没有1w以上的数据了
3 处理数据集
我们先看一下每个数据的长度
我们发现长度都是不一的,我们需要让其长度一致,长的剪掉,短的补充到一定的长度,我们这里使用tf.keras.preprocessing.sequence.pad_sequences(),第一个参数为要修改的对象,第二个参数为要修改的长度,我们修改x_train与x_test
我们现在再看一下x_train的所有数据长度
发现都变为300了
我们在看一下y_train(label)
发现它的值不是1就是0,那这个就不用再进行操作了
- 这种二分类的评论问题,1与0极有可能代表的就是积极或消极,但是哪个是积极哪个是消极就不得而知了
现在我们发现输入是一组数,输出是一个数,我们接下来的操作就和之前的线性回归相似了
4 建立模型
神经网络中我们唯一没使用过层是Embedding,这个层第一个参数为10000,这个是我们的max_word(索引最大值),第二个参数50是指生成的集成张量个数(大致可以理解为神经元个数),第三个参数input_length是我们每一个评论的长度
5 编译模型
6 训练模型
我们把acc与loss画出来看一下
- acc
- loss
根据这两条曲线我们很明显的看到模型存在过拟合显现
7 优化模型
我们把模型改为这样
看一下曲线
- acc
- loss
我们发现反正是强点儿,但是有限,如果要追求精度的话,我们就需要参考一下别人的网络了
我们在实际应用中,评估一段文字的感情色彩并不使用我上面的方法来评估,它使用的网络叫RNN(循环神经网络),这个我们后面会提到