Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类

简介: Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类

这个例子展示了如何使用深度学习长短期记忆(LSTM)网络对文本数据进行分类。

文本数据是有顺序的。一段文字是一个词的序列,它们之间可能有依赖关系。为了学习和使用长期依赖关系来对序列数据进行分类,可以使用LSTM神经网络。LSTM网络是一种递归神经网络(RNN),可以学习序列数据的时间顺序之间的长期依赖关系。

要向LSTM网络输入文本,首先要将文本数据转换成数字序列。你可以使用单词编码来实现这一点,该编码将文件映射为数字指数的序列。为了获得更好的结果,还可以在网络中加入一个词嵌入层。词汇嵌入将词汇映射为数字向量,而不是标量索引。这些嵌入发现了单词的语义细节,因此具有相似含义的单词具有相似的向量。它们还通过向量算术来模拟单词之间的关系。例如,"罗马之于意大利就像巴黎之于法国 "的关系由方程式意大利-罗马+巴黎=法国来描述。

在这个例子中,训练和使用LSTM网络有四个步骤。

  • 导入并预处理数据。
  • 使用单词编码将单词转换为数字序列。
  • 创建并训练一个带有单词嵌入层的LSTM网络。
  • 使用训练好的LSTM网络对新的文本数据进行分类。

导入数据

导入工厂报告数据。该数据包含对工厂事件的标签化文本描述。要把文本数据导入为字符串,指定文本类型为 "字符串"。

head(data)

这个例子的目的是通过类别栏中的标签对事件进行分类。为了将数据划分为类别,将这些标签转换为分类的。

Category = categorical(Category);

使用直方图查看数据中的类别分布。

figure
histogram(Category);

下一步是将其划分为训练和验证的集合。将数据划分为一个训练分区和一个用于验证和测试的保留分区。指定保留的百分比为20%。

cvp = cv(Category,'Holdout',0.2);

从分区的表中提取文本数据和标签。

DataTrain = Description;
DataValidation = Description;

为了检查你是否正确地导入了数据,可以用词云来可视化训练文本数据。

wordcloud(DataTrain);

预处理文本数据

创建一个函数,对文本数据进行标记和预处理。列在例子末尾的函数preprocessText,执行这些步骤。

  • 使用tokenizedDocument对文本进行标记。
  • 使用lower将文本转换为小写。
  • 使用 erasePunctuation 擦除标点符号。

对训练数据和验证数据进行预处理。

Train = preprocessText(DataTrain);

查看最初几个预处理的训练文件。

documentsTrain(1:5)

将文件转换为序列

为了将文档输入到LSTM网络中,使用一个单词编码将文档转换为数字指数序列。

创建一个词的编码

下一个转换步骤是对文件进行填充和截断,使它们的长度都相同。

要填充和截断文件,首先要选择一个目标长度,然后截断比它长的文件,左移比它短的文件。为了达到最佳效果,目标长度应该很短,而不会丢弃大量的数据。为了找到一个合适的目标长度,可以查看训练文档长度的直方图。

histogram(documentLengths)

大多数的训练文件都少于10个标记。将此作为截断和填充的目标长度。

将文档转换为数字索引序列。要截断或向左填充序列的长度为10,将 "长度 "选项设置为10。

doc2sequence(enc,'Length');

使用相同的选项将验证文件转换为序列。

sequence(Length);

创建和训练LSTM网络

定义LSTM网络结构。为了向网络输入序列数据,包括一个序列输入层,并将输入大小设置为1。接下来,包括一个维度为50的词嵌入层,词的数量与词的编码相同。接下来,包括一个LSTM层,并将隐藏单元的数量设置为80。最后,添加一个与类的数量相同的全连接层,一个softmax层,以及一个分类层。

inputSize = 1;
Dimension = 50;
HiddenUnits = 80;

指定训练选项

  • 使用Adam优化器进行训练.
  • 指定一个16的小批处理量。
  • 每隔一段时间对数据进行随机化。
  • 通过设置 "Plots "选项为 "training-progress "来监测训练进度。
  • 使用'ValidationData'选项指定验证数据。
  • 通过将'Verbose'选项设置为false来抑制输出。

默认情况下,如果有GPU,会使用GPU(需要并行计算工具箱™和支持CUDA®的计算能力3.0以上的GPU)。否则,它将使用CPU。在CPU上训练的时间可能比在GPU上训练的时间长很多。

options('adam', ...
    'BatchSize',16, ...
    'Shuffle','every-epoch', ...);

训练LSTM网络。

使用新数据进行预测

对三个新报告的事件类型进行分类。创建一个包含新报告的字符串数组。

使用预处理步骤对文本数据进行预处理,作为训练文档。

preprocessText(New);

将文本数据转换为序列,选项与创建训练序列时相同。

sequence(enc,sequenceLength);

使用训练好的LSTM网络对新序列进行分类。

classify(XNew)


相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
相关文章
|
9月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
632 0
|
机器学习/深度学习 编解码 人工智能
人脸表情[七种表情]数据集(15500张图片已划分、已标注)|适用于YOLO系列深度学习分类检测任务【数据集分享】
本数据集包含15,500张已划分、已标注的人脸表情图像,覆盖惊讶、恐惧、厌恶、高兴、悲伤、愤怒和中性七类表情,适用于YOLO系列等深度学习模型的分类与检测任务。数据集结构清晰,分为训练集与测试集,支持多种标注格式转换,适用于人机交互、心理健康、驾驶监测等多个领域。
|
12月前
|
机器学习/深度学习 算法 数据挖掘
基于WOA鲸鱼优化的BiLSTM双向长短期记忆网络序列预测算法matlab仿真,对比BiLSTM和LSTM
本项目基于MATLAB 2022a/2024b实现,采用WOA优化的BiLSTM算法进行序列预测。核心代码包含完整中文注释与操作视频,展示从参数优化到模型训练、预测的全流程。BiLSTM通过前向与后向LSTM结合,有效捕捉序列前后文信息,解决传统RNN梯度消失问题。WOA优化超参数(如学习率、隐藏层神经元数),提升模型性能,避免局部最优解。附有运行效果图预览,最终输出预测值与实际值对比,RMSE评估精度。适合研究时序数据分析与深度学习优化的开发者参考。
|
12月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于GA遗传优化的BiLSTM双向长短期记忆网络序列预测算法matlab仿真,对比BiLSTM和LSTM
本内容包含基于BiLSTM与遗传算法(GA)的算法介绍及实现。算法通过MATLAB2022a/2024b运行,核心为优化BiLSTM超参数(如学习率、神经元数量),提升预测性能。LSTM解决传统RNN梯度问题,捕捉长期依赖;BiLSTM双向处理序列,融合前文后文信息,适合全局信息任务。附完整代码(含注释)、操作视频及无水印运行效果预览,适用于股票预测等场景,精度优于单向LSTM。
|
10月前
|
机器学习/深度学习 人工智能 监控
河道塑料瓶识别标准数据集 | 科研与项目必备(图片已划分、已标注)| 适用于YOLO系列深度学习分类检测任务【数据集分享】
随着城市化进程加快和塑料制品使用量增加,河道中的塑料垃圾问题日益严重。塑料瓶作为河道漂浮垃圾的主要类型,不仅破坏水体景观,还威胁水生生态系统的健康。传统的人工巡查方式效率低、成本高,难以满足实时监控与治理的需求。
|
10月前
|
机器学习/深度学习 传感器 人工智能
火灾火焰识别数据集(2200张图片已划分、已标注)|适用于YOLO系列深度学习分类检测任务【数据集分享】
在人工智能和计算机视觉的快速发展中,火灾检测与火焰识别逐渐成为智慧城市、公共安全和智能监控的重要研究方向。一个高质量的数据集往往是推动相关研究的核心基础。本文将详细介绍一个火灾火焰识别数据集,该数据集共包含 2200 张图片,并已按照 训练集(train)、验证集(val)、测试集(test) 划分,同时配有对应的标注文件,方便研究者快速上手模型训练与评估。
3742 10
火灾火焰识别数据集(2200张图片已划分、已标注)|适用于YOLO系列深度学习分类检测任务【数据集分享】
|
8月前
|
机器学习/深度学习 数据采集 人工智能
深度学习实战指南:从神经网络基础到模型优化的完整攻略
🌟 蒋星熠Jaxonic,AI探索者。深耕深度学习,从神经网络到Transformer,用代码践行智能革命。分享实战经验,助你构建CV、NLP模型,共赴二进制星辰大海。
|
10月前
|
机器学习/深度学习 人工智能 监控
坐姿标准好坏姿态数据集(图片已划分、已标注)|适用于YOLO系列深度学习分类检测任务【数据集分享】
坐姿标准好坏姿态数据集的发布,填补了计算机视觉领域在“细分健康行为识别”上的空白。它不仅具有研究价值,更在实际应用层面具备广阔前景。从青少年的健康教育,到办公室的智能提醒,再到驾驶员的安全监控和康复训练,本数据集都能发挥巨大的作用。
坐姿标准好坏姿态数据集(图片已划分、已标注)|适用于YOLO系列深度学习分类检测任务【数据集分享】
|
10月前
|
机器学习/深度学习 自动驾驶 算法
道路表面缺陷数据集(裂缝/井盖/坑洼)(6000张图片已划分、已标注)|适用于YOLO系列深度学习分类检测任务【数据集分享】
随着城市化与交通运输业的快速发展,道路基础设施的健康状况直接关系到出行安全与城市运行效率。长期高强度的使用、气候变化以及施工质量差异,都会导致道路表面出现裂缝、坑洼、井盖下沉及修补不良等缺陷。这些问题不仅影响驾驶舒适度,还可能引发交通事故,增加道路养护成本。
道路表面缺陷数据集(裂缝/井盖/坑洼)(6000张图片已划分、已标注)|适用于YOLO系列深度学习分类检测任务【数据集分享】

热门文章

最新文章