CNN - BiLSTM - Attention分类:新手友好的多分类实战
CNN-BiLSTM-Attention分类基于卷积神经网络(CNN)-双向长短期记忆神经网络(BiLSTM)结合注意力机制(Attention)的数据分类预测 替换数据直接使用 1、运行环境要求MATLAB版本为2020及其以上可实现二分类和多分类 多输入单输出 2、代码中文注释清晰质量极高 3、运行结果图包括分类效果图迭代优化图混淆矩阵图如下所示 4、测试数据集可以直接运行源程序 适合新手小白最近在研究数据分类预测发现CNN - BiLSTM - Attention这种组合模型还挺有意思的而且它对新手小白也比较友好今天就来和大家分享分享。一、运行环境首先要注意啦咱们这个模型运行环境要求MATLAB版本为2020及其以上。为啥要这个版本呢因为高版本MATLAB在一些函数支持和性能优化上会更好能让我们更顺利地实现二分类和多分类。二、代码实现下面来看部分关键代码及分析。这里假设我们已经准备好了数据集并且数据格式都处理好了。1. 构建CNN层layers [ imageInputLayer([height width numChannels]) convolution2dLayer(3,16,Padding,same) batchNormalizationLayer reluLayer maxPooling2dLayer(2,Stride,2) ];分析imageInputLayer定义了输入层[height width numChannels]这里要根据你自己数据的图像尺寸和通道数来设置。比如说如果是普通RGB图像numChannels就是3。convolution2dLayer创建了一个卷积层3表示卷积核大小为3x316是输出的特征图数量。Padding,same保证卷积后图像尺寸不变。batchNormalizationLayer进行批归一化能加速模型收敛。reluLayer使用ReLU激活函数给模型引入非线性。maxPooling2dLayer是最大池化层2表示池化核大小Stride,2表示步长为2用于降低数据维度。2. 连接BiLSTM层layers [layers bilstmLayer(100,OutputMode,last) ];分析bilstmLayer创建了双向长短期记忆神经网络层100表示隐藏单元数量。OutputMode,last表示只输出最后一个时间步的隐藏状态这样可以和后续层更好地连接。3. 加入Attention机制Attention机制代码实现可能稍微复杂点这里简化示意一下function [attendedFeatures] attentionMechanism(inputFeatures) attentionWeights softmax(denseLayer(1,inputFeatures)); attendedFeatures sum(bsxfun(times, inputFeatures, attentionWeights), 2); end分析首先通过一个全连接层denseLayer得到注意力权重attentionWeights然后使用softmax函数对权重进行归一化。接着利用bsxfun函数将注意力权重与输入特征相乘并求和得到经过注意力机制处理后的特征attendedFeatures。4. 输出层layers [layers fullyConnectedLayer(numClasses) softmaxLayer classificationLayer ];分析fullyConnectedLayer是全连接层numClasses根据实际分类类别数设置。softmaxLayer将输出转换为概率分布。classificationLayer用于计算分类损失。三、运行结果图分类效果图能直观看到模型对不同类别的分类情况比如哪些数据点被正确分类哪些出现了误判。通过绘制散点图或者其他合适的图形来展示不同类别用不同颜色或标记区分。迭代优化图这个图可以看到随着训练迭代次数增加模型的损失函数值是如何下降的以及准确率是如何上升的。能帮助我们判断模型是否收敛有没有过拟合或欠拟合的情况。在MATLAB里可以用plot函数轻松绘制。figure; plot(trainingLoss); xlabel(Iteration); ylabel(Loss); title(Training Loss Curve);混淆矩阵图从混淆矩阵可以清楚地知道每个类别实际预测正确和错误的数量。在MATLAB里可以用confusionmat函数生成混淆矩阵再用confusionchart函数绘制可视化图形。predictedLabels classify(trainedNet,testData); confMat confusionmat(testLabels,predictedLabels); confusionchart(confMat);四、测试数据集这个模型提供了测试数据集大家可以直接运行源程序。这对于新手小白来说简直太友好了不用担心自己找数据和处理数据格式的麻烦直接上手跑代码看结果在实践中慢慢理解模型原理。CNN-BiLSTM-Attention分类基于卷积神经网络(CNN)-双向长短期记忆神经网络(BiLSTM)结合注意力机制(Attention)的数据分类预测 替换数据直接使用 1、运行环境要求MATLAB版本为2020及其以上可实现二分类和多分类 多输入单输出 2、代码中文注释清晰质量极高 3、运行结果图包括分类效果图迭代优化图混淆矩阵图如下所示 4、测试数据集可以直接运行源程序 适合新手小白总之CNN - BiLSTM - Attention这种数据分类预测模型结合了CNN的局部特征提取能力、BiLSTM对序列信息的处理能力以及Attention机制对重要特征的聚焦能力而且在MATLAB环境下实现起来对新手比较友好大家不妨一试