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表示卷积核大小为3x3,16是输出的特征图数量。'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环境下实现起来对新手比较友好,大家不妨一试!
