网站首页 > 技术文章 正文
之前主要研究现代信号处理,深度学习嘛,一个大号/深层的,现代的,黑箱的,信号/图像处理器,所以,作为一个研究现代信号处理的,顺便搞些深度学习也是顺理成章的。
本文简单讲解一下如何使用长短时记忆(LSTM)网络对序列数据进行分类。
为了训练深层神经网络对序列数据的每个时间步长进行分类,使用Sequence-to-Sequence的LSTM网络。Sequence-to-Sequence的LSTM网络能够对序列数据的每个单独的时间步长进行不同的预测
本文使用从受试者智能手机中获得的传感器数据,以识别受试者的动作,包括跳舞、跑步、散步、站立和静坐。训练数据包含七个受试者的时间序列数据,每个时间序列有三个特征(三个特征对应于三个不同方向的加速度计读数),长度各不相同。数据集包含六个训练观测值和一个测试观测值。
加载序列数据
XTrain
XTrain = 1×6 cell array
{3×64480 double} {3×53696 double} {3×56416 double} {3×50688 double} {3×51888 double} {3×54256 double}
可视化其中一个训练序列,绘制第一个训练序列的第一个特征,并根据相应的活动对图进行着色。
X = XTrain{1}(1,:);
classNames = categories(YTrain{1});
figure
for j = 1:numel(classNames)
label = classNames(j);
idx = find(YTrain{1} == label);
hold on
plot(idx,X(idx))
end
hold off
xlabel("Time Step")
ylabel("Acceleration")
title("Training Sequence 1, Feature 1")
legend(classNames,'Location','northwest')
定义LSTM网络结构
定义 LSTM 网络结构。输入维度为 3(输入数据的特征维度),隐层单元维度为100,然后通过维度为 5 的全连接层,最后为softmax 层和分类层以识别5个人体动作。
featureDimension = 3;
numHiddenUnits = 100;
numClasses = 5;
layers = [ ...
sequenceInputLayer(featureDimension)
lstmLayer(numHiddenUnits,'OutputMode','sequence')
fullyConnectedLayer(numClasses)
softmaxLayer
classificationLayer];
设置训练参数。使用adam优化器,初始学习速率为0.01,为了防止梯度爆炸,将梯度阈值设置为 1。
options = trainingOptions('adam', ...
'GradientThreshold',1, ...
'InitialLearnRate',0.01, ...
'LearnRateSchedule','piecewise', ...
'LearnRateDropPeriod',20, ...
'Verbose',0, ...
'Plots','training-progress');
开始对网络进行训练
net = trainNetwork(XTrain,YTrain,layers,options);
测试LSTM网络
加载测试数据并在每个时间步长对受试者活动进行分类。
加载测试数据XTest ,YTest 是与每个时间步长的活动相对应的一系列活动类别标签。
figure
plot(XTest')
xlabel("Time Step")
legend("Feature " + (1:featureDimension))
title("Test Data")
使用classify函数对测试数据进行分类,并计算准确率
YPred = classify(net,XTest);
acc = sum(YPred == YTest)./numel(YTest)
acc=0.9866
将预测结果与测试数据进行比较
figure
plot(YPred,'.-')
hold on
plot(YTest)
hold off
xlabel("Time Step")
ylabel("Activity")
title("Predicted Activities")
legend(["Predicted" "Test Data"])
完整代码
https://mianbaoduo.com/o/bread/Y5malJlq
猜你喜欢
- 2024-10-12 如何将“机器学习”引入自动化?原来只需要这三步
- 2024-10-12 我是如何从动力机械专业转行到算法工程师,完成薪资翻倍!
- 2024-10-12 从应用的角度来看,深度学习怎样快速入门?
- 2024-10-12 MATLAB环境下使用卷积神经网络对涡轮风扇发动机剩余使用寿命估计
- 2024-10-12 使用原始振动数据的滚动元件轴承的基于LSTM的状态监测和故障预测
- 2024-10-12 良心推荐!机器学习和深度学习最佳框架
- 2024-10-12 基于matlab使用机器学习和深度学习进行雷达目标分类
- 2024-10-12 Matlab和Python环境下的深度学习小项目(第二篇)
- 2024-10-12 Matlab和Python环境下的深度学习小项目
- 2024-10-12 基于长短时记忆网络LSTM的TE过程故障诊断(MATLAB R2021B)
你 发表评论:
欢迎- 最近发表
-
- 在 Spring Boot 项目中使用 activiti
- 开箱即用-activiti流程引擎(active 流程引擎)
- 在springBoot项目中整合使用activiti
- activiti中的网关是干什么的?(activiti包含网关)
- SpringBoot集成工作流Activiti(完整源码和配套文档)
- Activiti工作流介绍及使用(activiti工作流会签)
- SpringBoot集成工作流Activiti(实际项目演示)
- activiti工作流引擎(activiti工作流引擎怎么用)
- 工作流Activiti初体验及在数据库中生成的表
- Activiti工作流浅析(activiti6.0工作流引擎深度解析)
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)