使用自定义Mini-Batch数据存储内存不足的文本数据进行分类
这个例子展示了如何将内存不足与深入学习网络文本数据使用一个定制的mini-batch数据存储。
mini-batch数据存储是数据存储的实现支持批量读取数据。万博1manbetx您可以使用一个mini-batch数据存储的培训、验证、测试和预测深度学习应用程序的数据集。使用mini-batch数据存储读取内存不足数据或执行特定的预处理操作,当阅读批次的数据。
当训练网络,软件创建mini-batches序列长度相同的填充,删除,或分割输入数据。的trainingOptions
函数提供了选项板和截断输入序列,然而,这些选项并不是适合的词序列向量。此外,该函数不支持填充一个自定义数据存储中的数据。万博1manbetx相反,您必须手动垫和截断序列。如果你left-pad和截断的词序列向量,然后训练可能会提高。
的使用深度学习分类文本数据例子手动和垫的所有文档进行截断长度相同。这一过程增加了很多填充非常短的文件和丢弃大量的数据从很长的文件。
另外,为了防止添加过多的填充或丢弃太多数据,创建一个自定义输入mini-batches mini-batch数据存储到网络。自定义mini-batch数据存储textDatastore.m
mini-batches文档转换为序列或词指数和left-pads每个mini-batch mini-batch长度最长的文档。对于排序的数据,这种数据存储可以帮助减少填充添加到数据因为文件不垫固定长度。同样地,数据存储不丢弃任何数据文件。
下面的例子使用了自定义mini-batch数据存储textDatastore
附加到这个例子作为支持文件。万博1manbetx要访问这个文件,打开生活的脚本示例。你能适应这个数据存储你的数据通过定制功能。为一个例子,演示如何创建您自己的自定义mini-batch数据存储,明白了开发自定义Mini-Batch数据存储(深度学习工具箱)。
负载Pretrained字嵌入
数据存储textDatastore
需要一个字嵌入文档转换成向量序列。加载一个pretrained字嵌入使用fastTextWordEmbedding
。这个函数需要文本分析工具箱™模型160亿年fastText英语嵌入标记词万博1manbetx支持包。如果这种支持包没万博1manbetx有安装,那么函数提供一个下载链接。
emb = fastTextWordEmbedding;
创建Mini-Batch数据存储的文档
创建一个数据存储,其中包含的数据进行训练。自定义mini-batch数据存储textDatastore
阅读预测从CSV文件和标签。预测,数据存储将文档转换为序列的指数和响应,数据存储返回一个分类标签为每个文档。关于创建自定义mini-batch数据存储的更多信息,请参阅开发自定义Mini-Batch数据存储(深度学习工具箱)。
训练数据,指定CSV文件“factoryReports.csv”
这和标签的文本列“描述”
和“类别”
分别。
filenameTrain =“factoryReports.csv”;textName =“描述”;labelName =“类别”;dsTrain = textDatastore (filenameTrain textName、labelName emb)
dsTrain = textDatastore属性:类名:【“电子失败”“泄漏”“机械故障”“软件失败”)数据存储:[1×1 matlab.io.datastore。TransformedDatastore] EmbeddingDimension: 300 LabelName:“类别”MiniBatchSize: 128 NumClasses: 4 NumObservations: 480
创建和火车LSTM网络
定义LSTM网络体系结构。序列数据输入网络,包括序列输入层和设置输入大小嵌入维度。接下来,包括一个LSTM隐藏层180单元。使用LSTM层sequence-to-label分类问题,设置输出模式“最后一次”
。最后,添加一个完全连接层与输出尺寸等于类的数量,softmax层和一层分类。
numFeatures = dsTrain.EmbeddingDimension;numHiddenUnits = 180;numClasses = dsTrain.NumClasses;层= […sequenceInputLayer numFeatures lstmLayer (numHiddenUnits,“OutputMode”,“最后一次”)fullyConnectedLayer (numClasses) softmaxLayer classificationLayer];
指定培训选项。指定的能手“亚当”
和梯度阈值是2。数据存储textDatastore.m
不支持移动,所以准万博1manbetx备好了吗“洗牌”
,“永远”
。为一个例子,演示如何实现数据存储支持洗牌,明白了万博1manbetx开发自定义Mini-Batch数据存储(深度学习工具箱)。监控培训进展,设置“阴谋”
选项“训练进步”
。抑制详细输出,集“详细”
来假
。
默认情况下,trainNetwork
使用GPU如果一个是可用的。手动指定执行环境,使用“ExecutionEnvironment”
名称-值对的观点trainingOptions
。培训在CPU可以显著长于GPU。培训使用GPU需要并行计算工具箱™和支持GPU设备。万博1manbetx支持设备的信息,请参阅万博1manbetxGPU计算的需求(并行计算工具箱)。
miniBatchSize = 128;numObservations = dsTrain.NumObservations;numIterationsPerEpoch =地板(numObservations / miniBatchSize);选择= trainingOptions (“亚当”,…“MiniBatchSize”miniBatchSize,…“GradientThreshold”2,…“洗牌”,“永远”,…“阴谋”,“训练进步”,…“详细”、假);
火车LSTM网络使用trainNetwork
函数。
网= trainNetwork (dsTrain层,选项);
预测使用新数据
三个新报告的事件类型进行分类。创建一个字符串数组,其中包含新报告。
reportsNew = [“冷却池下面分选机。”“在启动分选机把保险丝烧断了。”“有一些非常响亮的哒哒声来自汇编程序。”];
预处理文本数据使用的预处理步骤作为数据存储textDatastore
。
文件= tokenizedDocument (reportsNew);文件=低(文件);= erasePunctuation文件(文档);预测= doc2sequence (emb、文档);
使用训练LSTM网络分类的新序列。
预测labelsNew =分类(净)
labelsNew =3×1分类泄漏电子机械失败
另请参阅
wordEmbeddingLayer
|doc2sequence
|tokenizedDocument
|lstmLayer
(深度学习工具箱)|trainNetwork
(深度学习工具箱)|trainingOptions
(深度学习工具箱)|sequenceInputLayer
(深度学习工具箱)|wordcloud
|extractHTMLText
|findElement
|htmlTree
相关的话题
- 生成文本使用深度学习(深度学习工具箱)
- 创建简单的文本分类模型
- 使用主题模型分析文本数据
- 使用多字短语分析文本数据
- 训练情绪分类器
- 使用深度学习序列分类(深度学习工具箱)
- 深度学习在MATLAB(深度学习工具箱)