这个例子展示了如何使用1-D卷积神经网络对序列数据进行分类。
要训练深度神经网络对序列数据进行分类,可以使用1-D卷积神经网络。1-D卷积层通过对1-D输入应用滑动卷积滤波器来学习特征。使用1-D卷积层比使用循环层更快,因为卷积层可以通过单个操作处理输入。相比之下,循环层必须遍历输入的时间步长。然而,根据网络架构和过滤器的大小,1-D卷积层的性能可能不如循环层,循环层可以学习时间步骤之间的长期依赖关系。
本例使用[1]和[2]中描述的日语Vowels数据集。这个例子训练了一个一维卷积神经网络来识别说话人给出的时间序列数据,表示连续说出两个日语元音。训练数据包含9位演讲者的时间序列数据。每个序列有12个特征,长度不同。数据集包含270个训练观测值和370个测试观测值。
加载日语元音训练数据。预测器数据是一个包含12个特征的不同长度序列的单元格数组。目标数据是标签“1”,“2”,…,“9”,对应9个说话者。预测器序列是有12行(每个特征一行)和不同数量的列(每个时间步骤一列)的矩阵。
[XTrain,TTrain] =日本evowelstraindata;[XValidation,TValidation] =日本evowelstestdata;
查看前几个训练序列。
XTrain (1:5)
ans =5×1单元格数组{12x20双}{12x26双}{12x22双}{12x20双}{12x21双}
把第一个时间序列想象成一个图形。每一行对应一个特征。
图(XTrain{1}')“时间步”)标题(“训练观察1”) numFeatures = size(XTrain{1},1);传奇(“特性”+字符串(1:numFeatures),位置=“northeastoutside”)
查看训练数据中的类数。
类=类别(TTrain);numClasses = numel(类)
numClasses = 9
定义1-D卷积神经网络架构。
将输入大小指定为输入数据的特征数量。
指定1-D卷积、ReLU和层归一化层的两个块,其中卷积层的过滤器大小为3。分别为第一和第二卷积层指定32和64个过滤器。对于两个卷积层,左填充输入,使输出具有相同的长度(因果填充)。
为了将卷积层的输出减少到单个向量,使用1-D全局平均池化层。
要将输出映射到概率向量,请指定一个输出大小与类数量匹配的全连接层,然后是一个softmax层和一个分类层。
filterSize = 3;numFilters = 32;层= [...sequenceInputLayer numFeatures convolution1dLayer (filterSize numFilters,填充=“因果”reluLayer layerNormalizationLayer convolution1dLayer(filterSize,2*numFilters,Padding= .“因果”reluLayer layerNormalizationLayer globalAveragePooling1dLayer fullyConnectedLayer(numClasses) softmaxLayer classificationLayer];
指定培训选项:
使用Adam优化器进行训练。
用27个小批量进行15次的训练。
左填充序列。
使用验证数据验证网络。
在一个图中监视训练进度,抑制冗长的输出。
miniBatchSize = 27;选项= trainingOptions(“亚当”,...MiniBatchSize = MiniBatchSize,...MaxEpochs = 15,...SequencePaddingDirection =“左”,...ValidationData = {XValidation, TValidation},...情节=“训练进步”,...Verbose = 0);
使用指定的训练选项训练网络trainNetwork
函数。
net = trainNetwork(XTrain,TTrain,图层,选项);
使用用于训练的相同的小批量大小和序列填充选项对验证数据进行分类。
YPred =分类(net,XValidation,...MiniBatchSize = MiniBatchSize,...SequencePaddingDirection =“左”);
计算预测的分类精度。
acc = mean(YPred == TValidation)
Acc = 0.9568
在一个混淆矩阵中可视化预测。
confusionchart (TValidation YPred)
[1]工藤,美一,富山俊,新保真。“使用穿过区域的多维曲线分类”模式识别信20,没有。11-13(1999年11月):1103-11。https://doi.org/10.1016/s0167 - 8655 (99) 00077 - x
[2]工藤,美一,富山俊,新保真。“日本元音数据集。”由UCI机器学习库分发。https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels
convolution1dLayer
|trainingOptions
|trainNetwork
|sequenceInputLayer
|maxPooling1dLayer
|averagePooling1dLayer
|globalMaxPooling1dLayer
|globalAveragePooling1dLayer