主要内容

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

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

迷你批处理数据存储是支持批量读取数据的数据存储的实现。金宝app您可以使用小批量数据存储作为深度学习应用程序的训练、验证、测试和预测数据集的来源。使用小批量数据存储读取内存不足的数据或在读取批量数据时执行特定的预处理操作。

在训练网络时,该软件通过填充、截断或分割输入数据来创建具有相同长度的小批量序列。的培训选项函数提供了填充和截断输入序列的选项,但是,这些选项不适用于单词向量序列。此外,该函数不支持填充自定义数据存储中的数据。金宝app相反,您必须手动填充和截断序列。如果你左侧垫子并截断单词向量的序列,然后培训可能改善。

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

另外,为了防止添加过多的填充或丢弃过多的数据,可以创建一个自定义的迷你批处理数据存储,它将迷你批处理输入到网络中。自定义的小批量数据存储textdatastore.m.将文档的小批转换为序列或字索引,并将每个小批中的左填充符转换为小批中最长文档的长度。对于已排序的数据,该数据存储可以帮助减少添加到数据中的填充量,因为文档不会被填充到固定长度。类似地,数据存储不会丢弃文档中的任何数据。

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

加载预先训练的词嵌入

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

emb = fasttextwordembedding;

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

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

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

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

filenameTrain =“factoryreports.csv”;TextName =.“描述”;labelName =.“类别”;dsTrain = textDatastore (filenameTrain textName、labelName emb)
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 (numHiddenUnits,'OutputMode'“最后一次”) fulllyconnectedlayer (numClasses) softmaxLayer classificationLayer;

指定培训选项。指定要使用的求解器“亚当”梯度阈值是2。数据存储textdatastore.m.不支持洗牌,所以设金宝app置'洗牌', 到“永远”.有关如何实现数据存储的示例,并支持支持Shuffling,请参阅金宝app开发自定义迷你批处理数据存储(深度学习工具箱).要监控培训进度,请设置“阴谋”选择“训练进步”.要抑制verbose输出,请设置'verbose'错误的

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

minibatchsize = 128;numobservations = dstrain.numobservations;numiterationsperepoch = bloor(numobservations / minibatchsize);选项=培训选项(“亚当”...“MiniBatchSize”,小匹马,...'gradientthreshold'2,...'洗牌'“永远”...“阴谋”“训练进步”...'verbose',错误的);

训练LSTM网络使用Trainnetwork.函数。

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

使用新数据进行预测

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

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

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

文件= tokenizedDocument (reportsNew);文件=低(文件);= erasePunctuation文件(文档);预测= doc2sequence (emb、文档);

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

预测labelsNew =分类(净)
labelsNew =3×1分类泄漏电子故障机械故障

另请参阅

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

相关话题