【深度学习】-Imdb数据集情感分析之模型对比(2)-LSTM

文章目录

  • 前言
  • 一、LSTM是什么?
    • 算法介绍
  • 二、训练LSTM模型
    • 1.数据预处理
  • 2.构建LSTM模型
    • 设定模型参数
    • 构建并训练模型
    • 训练模型
  • 三、 数据可视化展示
  • 四、评估模型
  • 五、总结
  • 参考资料

前言

【深度学习】-Imdb数据集情感分析之模型对比(1)-RNN


数据集介绍部分见前篇,本文主要讲述LSTM模型的构建。

一、LSTM是什么?

算法介绍

我们之前使用RNN的关键点之一就是他们可以用来连接先前的信息到当前的任务上,例如使用过去的视频段来推测对当前段的理解。同时,这也是RNN最大的不足。另外,虽然RNN程序好写,训练却是非常困难,而且网络是根据输入而展开的,输入越多展开越长,就月有可能回导致梯度消失和梯度爆炸。所以循环神经网络对长短期记忆的要求依然没有达到。

LSTM应运而生,它是一种特殊的RNN类型,可以学习长期依赖信息。LSTM由Hochreiter & Schmidhuber (1997)提出,并在近期被Alex Graves 进行了改良和推广。在很多问题上,LSTM都取得了相当巨大的成功,并得到了广泛的使用。

我们首先来了解一下LSTM(long short-term memory)。长短期记忆网络是RNN的一种变体,RNN由于梯度消失的原因只能有短期记忆,LSTM网络通过精妙的门控制将加法运算带入网络中,一定程度上解决了梯度消失的问题。只能说一定程度上,过长的序列还是会出现“梯度消失”(我记得有个老外的博客上说长度超过300就有可能出现),所以LSTM叫长一点的“短时记忆”。其结构如下:

具体不做详细描述,我们重点研究如何构建其模型。

二、训练LSTM模型

1.数据预处理

与前文类似,详细请移步【深度学习】-Imdb数据集情感分析之模型对比(1)- RNN
数据预处理部分


2.构建LSTM模型

设定模型参数


max_features = 4000   # 词汇表大小
# cut texts after this number of words (among top max_features most common words)
# 裁剪文本为 maxlen 大小的长度(取最后部分,基于前 max_features 个常用词)
maxlen = 400
batch_size = 32   # 批数据量大小

构建并训练模型

model = Sequential()
# 嵌入层
model.add(Embedding(max_features, 128, dropout=0.2))
# LSTM层
model.add(LSTM(128, dropout_W=0.2, dropout_U=0.2))
model.add(Dense(1))   # 单神经元全连接层
model.add(Activation('sigmoid'))   # sigmoid 激活函数层model.summary()   # 模型概述model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])

如果你还想对模型进一步优化,可以尝试换不同的损失函数以及优化器。

训练模型

划分训练集

train_history =model.fit(X_train, y_train, batch_size=batch_size, nb_epoch=10,validation_data=(X_test, y_test))

开始训练

Epoch 1/10
25000/25000 [==============================] - 729s 29ms/step - loss: 0.4717 - accuracy: 0.7756 - val_loss: 0.3846 - val_accuracy: 0.8360
Epoch 2/10
25000/25000 [==============================] - 757s 30ms/step - loss: 0.4018 - accuracy: 0.8249 - val_loss: 0.3525 - val_accuracy: 0.8562
Epoch 3/10
25000/25000 [==============================] - 722s 29ms/step - loss: 0.3529 - accuracy: 0.8511 - val_loss: 0.3682 - val_accuracy: 0.8457
Epoch 4/10
25000/25000 [==============================] - 727s 29ms/step - loss: 0.3112 - accuracy: 0.8731 - val_loss: 0.3416 - val_accuracy: 0.8574
Epoch 5/10
25000/25000 [==============================] - 735s 29ms/step - loss: 0.2917 - accuracy: 0.8787 - val_loss: 0.3375 - val_accuracy: 0.8654
Epoch 6/10
25000/25000 [==============================] - 774s 31ms/step - loss: 0.2511 - accuracy: 0.8952 - val_loss: 0.2835 - val_accuracy: 0.8844
Epoch 7/10
25000/25000 [==============================] - 770s 31ms/step - loss: 0.1873 - accuracy: 0.9259 - val_loss: 0.2971 - val_accuracy: 0.8794
Epoch 8/10
25000/25000 [==============================] - 733s 29ms/step - loss: 0.1521 - accuracy: 0.9416 - val_loss: 0.3253 - val_accuracy: 0.8796
Epoch 9/10
25000/25000 [==============================] - 729s 29ms/step - loss: 0.1294 - accuracy: 0.9505 - val_loss: 0.3328 - val_accuracy: 0.8786
Epoch 10/10
25000/25000 [==============================] - 732s 29ms/step - loss: 0.1057 - accuracy: 0.9614 - val_loss: 0.3696 - val_accuracy: 0.8832

三、 数据可视化展示

import matplotlib.pyplot as plt
def show_train_history(train_history,train,validation):plt.plot(train_history.history[train])plt.plot(train_history.history[validation])plt.title('Train History')plt.ylabel(train)plt.xlabel('Epoch')plt.legend(['train', 'validation'], loc='upper left')plt.show()show_train_history(train_history,'accuracy','val_accuracy')
show_train_history(train_history,'loss','val_loss')

四、评估模型

score, acc = model.evaluate(X_test, y_test,batch_size=batch_size)
print('Test score:', score)
print('Test accuracy:', acc)

五、总结

LSTM模型在训练集上的准确率维持在96.14%,测试集上的准确率为83.9%,损失率为10.57%,训练时长约为7740s,是几个模型中最慢的。推测可能是对文本进行长短期预测,所以耗时最久,但其一定程度上规避了RNN的梯度消失的问题,准确率得到了提高。

参考资料

https://blog.csdn.net/keeppractice/article/details/106145451

【深度学习】-Imdb数据集情感分析之模型对比(2)- LSTM相关推荐

  1. 【深度学习】-Imdb数据集情感分析之模型对比(4)- CNN-LSTM 集成模型

    [深度学习]-Imdb数据集情感分析之模型对比(4)- CNN-LSTM 集成模型 前言 [深度学习]-Imdb数据集情感分析之模型对比(3)- CNN [深度学习]-Imdb数据集情感分析之模型对比 ...

  2. [深度学习-NLP]Imdb数据集情感分析之模型对比(贝叶斯, LSTM, GRU, TextCNN, Transformer, BERT)

    一,详细原理以及代码请看下面博客 1.Imdb数据集情感分析之离散贝叶斯 2.Imdb数据集情感分析之LSTM长短期记忆 3.Imdb数据集情感分析之卷积神经网络-TextCNN 4.Imdb数据集情 ...

  3. [深度学习-实战篇]情感分析之卷积神经网络-TextCNN,包含代码

    0. 前言 在"卷积神经网络"中我们探究了如何使用二维卷积神经网络来处理二维图像数据.在之前的语言模型和文本分类任务中,我们将文本数据看作是只有一个维度的时间序列,并很自然地使用循 ...

  4. 人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 情感分析

    情感分析 本教程源代码目录在book/understand_sentiment,初次使用请您参考Book文档使用说明. 背景介绍¶ 在自然语言处理中,情感分析一般是指判断一段文本所表达的情绪状态.其中 ...

  5. [机器学习-实战篇]Imdb数据集情感分析之贝叶斯

    一, 前言 1.Imdb影评的数据集介绍与下载 2.贝叶斯原理介绍 3.TF-IDF是什么 二,代码介绍 preprocess_data() 方法包含以下步骤: 加载Imdb影评数据. 用数据训练Co ...

  6. 花书+吴恩达深度学习(十九)构建模型策略(训练模型顺序、偏差方差、数据集划分、数据不匹配)

    目录 0. 前言 1. 调试模型顺序 2. 偏差方差的解决方法 3. 数据集的选取划分 4. 数据不匹配问题 5. 评估指标的选取 6. 贝叶斯最佳误差 如果这篇文章对你有一点小小的帮助,请给个关注, ...

  7. 《深度学习导论及案例分析》一2.11概率图模型的推理

    本节书摘来自华章出版社<深度学习导论及案例分析>一书中的第2章,第2.11节,作者李玉鑑 张婷,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.11概率图模 ...

  8. vue+django 微博舆情系统源码、深度学习+舆情扩散消失分析、舆情紧急等级、属地分析、按话题、情感预测、话题评论获取、提取观点、正面负面舆情、按区域检测舆情

    项目背景 315又马上要到了,现在有开始对食品安全话题的关注地提升了,因此,本文系统对微博的食品安全话题进行分析,有如下的功能 1.展示当前食品安全事件相关的热点信息以及提供根据食品关键词,食品安全类 ...

  9. [NLP]基于IMDB影评情感分析之BERT实战-测试集上92.24%

    系列文章目录 深度学习NLP(一)之Attention Model; 深度学习NLP(二)之Self-attention, Muti-attention和Transformer; 深度学习NLP(三) ...

最新文章

  1. 分享 10 道 Nodejs 进程相关面试题
  2. WPF快速指导1:资源
  3. spring2.0和spring2.5及以上版本的jar包区别 spring jar 包详解
  4. shell中trap捕捉到信号的处理
  5. python selenium webdriver方法封装(find_element_by)
  6. Spring是如何利用“三级缓存“巧妙解决Bean的循环依赖问题
  7. background使用
  8. 【单片机实验】矩阵键盘
  9. GDAL源码剖析(四)之命令行程序说明一
  10. python难学吗-Python为什么那么受欢迎?学习Python难不难?
  11. 在XNA 3.0 项目添加声音——通过Xact播放简单的.wav文件
  12. 史上最详细的宝塔部署java项目流程
  13. 通俗易懂的理解BiLSTM-CRF模型中的CRF层
  14. java 发送企业邮箱_Java实现网易企业邮箱发送邮件
  15. 产品经理从专能到全能——不再虚无缥缈的用户体验
  16. 云大计算机专业基础综合,2020云南大学计算机专业课改考408
  17. OpenCV+ip摄像头实现远程实时监控
  18. 国内 Mono 相关文章汇总
  19. @Transactional注解说明
  20. 零输入响应,零状态响应,全响应

热门文章

  1. 练习基础素描也有技巧,衬布光线角度等关键点.....
  2. JQ-AJAX执行成功不执行success方法解决
  3. 在电脑上录制课程音频用什么录音软件好用?
  4. 毕业三到五年,别让“努力”毁了你
  5. Elasticsearch冷热集群搭建
  6. B站最受欢迎的Python教程,免费教学视频可以下载了
  7. Turtlebot4入门教程-软件-软件包安装
  8. linux启动jar后回到根目录,SpringBoot 打包 Jar 启动后,获得jar包所在目录,SpringBoot获取根目录...
  9. PDF 无法打印 Foxitsoftware Pdf Reader
  10. 基于sys文件系统的LED驱动的移植【原创】