主要内容

使用自定义迷你批处理数据存储对内存外文本数据进行分类

此示例显示如何使用自定义迷你批处理数据存储对存储器外部文本数据进行分类。

迷你批处理数据存储是数据存储的实现,支持批量读取数据。万博1manbetx您可以使用迷你批处理数据存储作为深度学习应用程序的培训,验证,测试和预测数据集来源。使用迷你批量数据存储读取内存数据或在阅读数据批次时执行特定的预处理操作。

在培训网络时,软件通过填充,截断或分割输入数据创建相同长度的逐个序列。这培训选项功能为填充和截断输入序列提供选项,但是这些选项不太适用于单词向量的序列。此外,此功能不支持自定义数据存储中的填充数据。万博1manbetx相反,您必须手动填充并截断序列。如果你左侧垫子并截断单词向量的序列,然后培训可能改善。

使用深度学习对文本数据进行分类示例手动截断并填充所有文档到相同的长度。此过程为非常短的文档添加了大量填充,并丢弃来自很长的文档的大量数据。

或者,为了防止添加过多的填充或丢弃太多数据,创建一个自定义迷你批量数据存储,该数据存储将Mini-Batches输入到网络中。自定义迷你批处理数据存储textdatastore.m.将Mini-Batch的文档转换为序列或单词指数,然后将每个迷你批处理到迷你批次中最长文档的长度。对于排序数据,此数据存储可能有助于减少添加到数据的填充量,因为文档未填充到固定长度。同样,数据存储区不会丢弃文档中的任何数据。

此示例使用自定义迷你批处理数据存储textdatastore.m.。您可以通过自定义函数使此数据存储调整到数据。有关展示如何创建自己的自定义迷你批处理数据存储的示例,请参阅开发自定义迷你批处理数据存储(深度学习工具箱)

加载佩带的单词嵌入

数据存储textdatastore.需要嵌入单词以将文档转换为向量序列。加载嵌入使用的预磨词fasttextwordembeddings.。此功能需要文本分析工具箱™模型对于FastText英语160亿令牌字嵌入万博1manbetx支持包。如果未安装此支持万博1manbetx包,则该函数提供了下载链接。

emb = fasttextwordembedding;

创建文档的迷你批量数据存储

创建包含培训数据的数据存储。自定义迷你批处理数据存储textdatastore.从CSV文件中读取预测器和标签。对于预测器,数据存储区将文档转换为单词索引和响应的序列,数据存储返回每个文档的分类标签。

要创建数据存储,请首先保存自定义迷你批处理数据存储textdatastore.m.到了路径。有关创建自定义迷你批处理数据存储的详细信息,请参阅开发自定义迷你批处理数据存储(深度学习工具箱)

对于培训数据,请指定CSV文件“factoryreports.csv”并且该文本和标签位于列中“描述”“类别”分别。

Filenametrain =.“factoryreports.csv”;TextName =.“描述”;labelName =.“类别”;dstrain = textdataStore(filenametrain,textname,labelname,mem)
Dstrain =具有属性的TextDataStore:ClassNames:[“电子失败”“泄漏”“机械故障”“软件故障”]数据存储:[1×1 matlab.io.datastore.TransformedDataStore] EmbeddingDimension:300 LabelName:“类别”小型匹配:128numcrasses:4 numobservations:480

创建和训练LSTM网络

定义LSTM网络架构。要将序列数据输入网络,请包括序列输入层并将输入大小设置为嵌入尺寸。接下来,包括具有180个隐藏单元的LSTM层。要使用LSTM层进行序列到标签分类问题,请将输出模式设置为'最后的'。最后,将具有等于类别的输出大小的完全连接的图层,Softmax层和分类层。

numfeatures = dstrain.embedddingdimensile;numhidendunits = 180;numclasses = dstrain.numclasses;层= [......sequenceInputlayer(numfeatures)lstmlayer(numhidentunits,'OutputMode''最后的')全连接列(numclasses)softmaxlayer分类层];

指定培训选项。指定求解器'亚当'和渐变阈值为2.数据存储textdatastore.m.不支持洗牌,所以设万博1manbetx置'洗牌', 至'绝不'。有关如何实现数据存储的示例,并支持支持Shuffling,请参阅万博1manbetx开发自定义迷你批处理数据存储(深度学习工具箱)。要监控培训进度,请设置'plots'选择'培训 - 进步'。要抑制详细输出,请设置'verbose'错误的

默认,Trainnetwork.如果有一个可用的,则使用GPU。要手动指定执行环境,请使用'executionenvironment'名称 - 值对参数培训选项。CPU培训可能比GPU培训显着更长。使用GPU的训练需要并行计算工具箱™和支持的GPU设备。万博1manbetx有关支持设备的信息,请参阅万博1manbetx

minibatchsize = 128;numobservations = dstrain.numobservations;numiterationsperepoch = bloor(numobservations / minibatchsize);选项=培训选项('亚当'......'minibatchsize',小匹马,......'gradientthreshold'2,......'洗牌''绝不'......'plots''培训 - 进步'......'verbose',错误的);

使用该网络训练LSTM网络Trainnetwork.功能。

net = trainnetwork(dstrain,图层,选项);

使用新数据预测

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

eportsnew = [“冷却液在分拣机下面汇集。”“分拣机在启动时吹熔断。”“汇编者有一些非常响亮的嘎嘎声的声音。”];

使用预处理步骤作为数据存储的预处理预处理文本数据textdatastore.m.

文档= tokenizeddocument(eportsnew);文件=较低(文件);文件=侵蚀(文件);预测器= doc2sequence(mem,文件);

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

Labelsnew =分类(网络,预测器)
Labelsnew =3×1分类泄漏电子故障机械故障

也可以看看

|||||||(深度学习工具箱)|(深度学习工具箱)|(深度学习工具箱)|(深度学习工具箱)

相关话题