电影评论分类:二分类问题

第一次完整的跑了一遍,算是入门深度学习

一、安装anaconda,tensorflow,keras(无数遍后终于全部成功)

二、导入数据

评论以数字的形式呈现,且只保留前10000个最常见的单词。标签分别为0或1,代表正面或者负面新闻。

用这段代码可以将评论解码为英文单词

 

三、数据处理

将整数序列编码为二进制矩阵,并且将标签向量化

四、搭建网络模型(三层)

隐藏单元越多(即更高维 的表示空间),网络越能够学到更加复杂的表示。

sigmoid函数的输出值可以看成概率值,即为正面标签的概率。

五、编译模型并配置优化器,自定义损失和指标

六、留出验证数据,训练模型并绘制图像

 

由图像发现训练数据的精度随着训练轮次的增大而增大,损失也越来越小;而验证数据并非如此,在第四轮达到最优值。由此可得训练网络模型过拟合化了。

 七、重新训练模型,将轮次设为4

八、用测试数据进行测验

 

发现损失为30.96%,精确度达到87.58%。如果使用更先进的技术精确度会更高。

再利用predict可以预测测试样本中为正面新闻的概率。

九、总结

通常需要对原始数据进行大量预处理,以便将其转换为张量输入到神经网络中。

单词序列可以编码为二进制向量,但也有其他编码方式。

带有 relu 激活的 Dense 层堆叠,可以解决很多种问题(包括情感分类)。

对于二分类问题(两个输出类别),网络的最后一层应该是只有一个单元并使用 sigmoid 激活的 Dense 层,网络输出应该是 0~1 范围内的标量,表示概率值。对于二分类问题的 sigmoid 标量输出,你应该使用 binary_crossentropy 损失函数。无论你的问题是什么,rmsprop 优化器通常都是足够好的选择。

随着神经网络在训练数据上的表现越来越好,模型最终会过拟合,并在前所未见的数据上得到越来越差的结果,一定要一直监控模型在训练集之外的数据上的性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值