fb是什么,怎么学习深度学习?
深度学习,就是深层神经网络,仅此而已罢了,直接给你个基于深度学习的心音信号分类的例子。心音信号(PCG)是人体重要的生理信号,携带大量生理特征,但这些微弱信号的提取极易受到外界的干扰,关于心音信号处理相关的文章,可参考下面几篇博士论文,讲的非常详细,因此,不再赘述。
[1]陈尧. 心音心电信号处理的神经网络方法[D].四川大学,2021.
[2]李婷. 基于循环平稳信号理论的心音信号处理方法研究[D].大连理工大学,2015.
[3]韩威. 小样本心音分类方法研究[D].广东工业大学,2020.
首先进行心音信号2分类,即正常与异常分类,首先看一下本次试验用的GoogLeNet网络结构信息
看一下Layers结构
看下输入层信息
看一下两类PCG样本的时域波形
然后定义连续小波变换的滤波器组
fb = cwtfilterbank('SignalLength',signalLength,'VoicesPerOctave',12)
将生成的时频图像导入数据文件夹中
allImages = imageDatastore(fullfile(tempdir,dataDir),... 'IncludeSubfolders',true,'LabelSource','foldernames');
80%的样本用于训练,20%的样本用于测试
rng default [imgsTrain,imgsValidation] = splitEachLabel(allImages,0.8,'randomized'); disp(['Number of training images: ',num2str(numel(imgsTrain.Files))]); disp(['Number of validation images: ',num2str(numel(imgsValidation.Files))]);
Number of training images: 1673
Number of validation images: 419
看一下PCG信号CWT时频谱图的样子,首先看一下异常样本
再看一下正常常样本
设置GoogleNet网络的训练参数,采用sgdm优化算法,小批量尺寸MiniBatchSize=15,最大迭代次数MaxEpochs=20,初始学习率InitialLearnRate=1e-4。
options = trainingOptions('sgdm',... 'MiniBatchSize',15,... 'MaxEpochs',20,... 'InitialLearnRate',1e-4,... 'ValidationData',imgsValidation,... 'ValidationFrequency',10,... 'Verbose',false,... 'ExecutionEnvironment','gpu',... 'Plots','training-progress');
开始训练网络
trainedGN = trainNetwork(imgsTrain,lgraph_2,options);
进行网络测试
[YPred,probs] = classify(trainedGN,imgsValidation); accuracy = mean(YPred==imgsValidation.Labels); display(['GoogLeNet Accuracy: ',num2str(accuracy)])
GoogLeNet Accuracy: 0.89948,GoogLeNet的准确率达到了90%左右,不是很高,因为样本并不是很多。
看一下混淆矩阵
计算一下各个类别的分类指标
%"异常”类别分类指标 RecallAbnormal = Matrice_confusione.NormalizedValues(1,1)/sum(Matrice_confusione.NormalizedValues(1,:)); PrecisionAbnormal = Matrice_confusione.NormalizedValues(1,1)/sum(Matrice_confusione.NormalizedValues(:,1)); F1Abnormal = harmmean([RecallAbnormal PrecisionAbnormal]); fprintf('RecallAbnormal = %2.3fnPrecisionAbnormal = %2.3fnF1Abnormal = %2.3fn',100*RecallAbnormal,100*PrecisionAbnormal,100*F1Abnormal); %"正常"类别分类指标 RecallNormal = Matrice_confusione.NormalizedValues(2,2)/sum(Matrice_confusione.NormalizedValues(2,:)); PrecisionNormal = Matrice_confusione.NormalizedValues(2,2)/sum(Matrice_confusione.NormalizedValues(:,2)); F1Normal = harmmean([RecallNormal PrecisionNormal]); fprintf('RecallNormal = %2.3fnPrecisionNormal = %2.3fnF1Normal = %2.3fn',100*RecallNormal,100*PrecisionNormal,100*F1Normal);
RecallAbnormal = 82.470 PrecisionAbnormal = 86.250 F1Abnormal = 84.318 RecallNormal = 93.592 PrecisionNormal = 91.635 F1Normal = 92.603
因为本例只是个示范,所用的样本相对于GoogleNet结构并不多,所以分类准确率并不高。
下面进行心音信号5分类,即正常normal,主动脉瓣反流 AR,主动脉瓣狭窄AS,二尖瓣反流MR,二尖瓣狭窄MS五类,同样本例只是个示范,所用的样本较少,所以分类准确率并不高。看一下5类PCG样本的时域波形
然后定义连续小波变换的滤波器组
fb = cwtfilterbank('SignalLength',signalLength,'VoicesPerOctave',12)
看一下生成的CWT时频谱图
将生成的时频图像导入数据文件夹中
allImages = imageDatastore(fullfile(tempdir,dataDir),... 'IncludeSubfolders',true,'LabelSource','foldernames');
70%的样本用于训练,30%的样本用于测试
rng default [imgsTrain,imgsValidation] = splitEachLabel(allImages,0.7,'randomized'); disp(['Number of training images: ',num2str(numel(imgsTrain.Files))]); disp(['Number of validation images: ',num2str(numel(imgsValidation.Files))]);
设置GoogleNet网络的训练参数
options = trainingOptions('sgdm',... 'MiniBatchSize',15,... 'MaxEpochs',20,... 'InitialLearnRate',1e-4,... 'ValidationData',imgsValidation,... 'ValidationFrequency',10,... 'Verbose',false,... 'ExecutionEnvironment','gpu',... 'Plots','training-progress');
开始训练
trainedGN = trainNetwork(imgsTrain,lgraph_2,options);
进行图像样本分类
[YPred,probs] = classify(trainedGN,imgsValidation); accuracy = mean(YPred==imgsValidation.Labels); display(['GoogLeNet Accuracy: ',num2str(accuracy)])
GoogLeNet Accuracy: 0.9
看一下各类别的分类指标
%"normal" 类别分类指标 RecallNormal = Matrice_confusione.NormalizedValues(5,5)/sum(Matrice_confusione.NormalizedValues(5,:)); PrecisionNormal = Matrice_confusione.NormalizedValues(5,5)/sum(Matrice_confusione.NormalizedValues(:,5)); F1Normal = harmmean([RecallNormal PrecisionNormal]); fprintf('RecallNormal = %2.3fnPrecisionNormal = %2.3fnF1Normal = %2.3fn',100*RecallNormal,100*PrecisionNormal,100*F1Normal); %"AR"类别分类指标 RecallAR = Matrice_confusione.NormalizedValues(1,1)/sum(Matrice_confusione.NormalizedValues(1,:)); PrecisionAR = Matrice_confusione.NormalizedValues(1,1)/sum(Matrice_confusione.NormalizedValues(:,1)); F1AR = harmmean([RecallAR PrecisionAR]); fprintf('RecallAR = %2.3fnPrecisionAR = %2.3fnF1AR = %2.3fn',100*RecallAR,100*PrecisionAR,100*F1AR); % "AS"类别分类指标 RecallAS = Matrice_confusione.NormalizedValues(2,2)/sum(Matrice_confusione.NormalizedValues(2,:)); PrecisionAS = Matrice_confusione.NormalizedValues(2,2)/sum(Matrice_confusione.NormalizedValues(:,2)); F1AS = harmmean([RecallAS PrecisionAS]); fprintf('RecallAS = %2.3fnPrecisionAS = %2.3fnF1AS = %2.3fn',100*RecallAS,100*PrecisionAS,100*F1AS); %"MR"类别分类指标 RecallMR = Matrice_confusione.NormalizedValues(3,3)/sum(Matrice_confusione.NormalizedValues(3,:)); PrecisionMR = Matrice_confusione.NormalizedValues(3,3)/sum(Matrice_confusione.NormalizedValues(:,3)); F1MR = harmmean([RecallMR PrecisionMR]); fprintf('RecallMR = %2.3fnPrecisionMR = %2.3fnF1MR = %2.3fn',100*RecallMR,100*PrecisionMR,100*F1MR); %"MS"类别分类指标 RecallMS = Matrice_confusione.NormalizedValues(4,4)/sum(Matrice_confusione.NormalizedValues(4,:)); PrecisionMS = Matrice_confusione.NormalizedValues(4,4)/sum(Matrice_confusione.NormalizedValues(:,4)); F1MS = harmmean([RecallMS PrecisionMS]); fprintf('RecallMS = %2.3fnPrecisionMS = %2.3fnF1MS = %2.3fn',100*RecallMS,100*PrecisionMS,100*F1MS);
RecallNormal = 100.000 PrecisionNormal = 100.000 F1Normal = 100.000 RecallAR = 100.000 PrecisionAR = 75.000 F1AR = 85.714 RecallAS = 83.333 PrecisionAS = 100.000 F1AS = 90.909 RecallMR = 80.000 PrecisionMR = 100.000 F1MR = 88.889 RecallMS = 83.333 PrecisionMS = 83.333 F1MS = 83.333
由于小样本原因,准确率不是很高。重点来了,更重要的是看看如何进行改进
改进方向:信号前处理
1.可以使用合适的信号降噪方法,移不变小波去噪方法对于PCG,ECG等信号来说还是不错的
基于Cycle Spinning的移不变小波去噪 - 哥廷根数学学派的文章 - 知乎 https://zhuanlan.zhihu.com/p/539089086
2.根据PCG信号的波形,可以自适应的构造更合适的小波
利用机器学习模型设计正交小波滤波器 - 哥廷根数学学派的文章 - 知乎 https://zhuanlan.zhihu.com/p/537254014
为连续小波变换CWT构造新小波 - 哥廷根数学学派的文章 - 知乎 https://zhuanlan.zhihu.com/p/534682868
3.使用时频谱图更加集中的同步压缩变换
同步压缩变换初探 - 哥廷根数学学派的文章 - 知乎 https://zhuanlan.zhihu.com/p/543569766
高阶同步压缩变换--占坑 - 哥廷根数学学派的文章 - 知乎 https://zhuanlan.zhihu.com/p/544716722
在网络选取方面
GoogLeNet相对于本文样本来说太大了,同时我并不推荐迁移学习和样本生成方法,不要问我为什么
基于小波时间散射网络的ECG 信号分类 - 哥廷根数学学派的文章 - 知乎 https://zhuanlan.zhihu.com/p/539001673
基于小波散射算法的空气压缩机异常噪声诊断 - 哥廷根数学学派的文章 - 知乎 https://zhuanlan.zhihu.com/p/531077421
码字不易,且行且珍惜
货代说没有放行是什么回事?
码头没有放行是指货柜没装上船,还是没有海关放行信息
1,货柜没装上船的话,可能这条船爆仓,或者船不来了,需要改船
2,没有海关放行信息,报关行查到放行信息,码头没有,就是码头与海关信息交流出了问题,一般报关行输舱单都有个平台,一般是找那个平台解决
油封型号FB40X55X8D各个数字都表示什么意思?
FB为国标内骨架带防尘唇的普通双唇油封。40为公称内径直径,也就是轴径。55为腔体尺寸,是油封的外径。8为油封的高度。后面的D不明白是什么意思,常不起什么作用,但要注意的是要根据工作环境选择合适的材质。单位:mm 我是专营进口油封的,如果其他不明白的,可再问。
是不是可以理解为工频以下低速高速的转矩一样?
“恒转矩方式”我们经常听到的解释是工频以下恒转矩调速,工频以上恒功率调速。在这里我们需要了解下两方面:1电机的实际输出转矩是不是变频器决定的而是负载决定的,2电机能够输出的转矩也不是由变频器决定而是由电机结构决定。我们在讨论转矩的时候能够跳出变频器,从负载和电机方面着手,这样会很清洗不容易搞混淆,尤其是套各种各样的公式,理解起来很负载。
为什么变频器V/F控制方式是恒转矩方式,首先我们说下V/F控制方式:
“对于异步电机,为了获取我们所需要的转矩和速度在改变电源频率(调速)的同时,必须还要保证一个量不变,这个就是磁通不变或者说电机的气隙磁通处于高效状态,因为在励磁不足的情况下电动机将难以给出足够的转矩,而在励磁过强时电动机又将出现磁饱和,造成电动机功率因数和效率的下降”我们看一个公式E=kFφ,E感应电动势、k系数、F频率、φ磁通,为了保持磁通不变,在调速时候就是改变F的同时,也要改变电动势E,这样φ=E/kF保持不变了,这就是变频器V/F控制的出发点或者原理,但是在实际电机调速时候感应电动势E是不能直接测量和控制的,再看下另一个公式,V=E1+E,其中V是电源电压,E1表示定子压降,在E远大于E1时,我们可以认为V≈E,也就是说在感应电动势很大的情况下V/F可以代替E/F控制方式,这里我们暂停下说下恒转矩调速方式。
恒转矩调速是用来表征电动机采用这种调速时的负载能力,并不是指电动机的实际负载。电动机采用恒转矩调速时,如果拖动恒转矩负载运行,并使电动机的额定转矩等于负载转矩,则不论运行在什么转速上,电枢电流都不变,电动机被合理利用,负载的恒转矩要求也得到满足.这种恒转矩调速与恒转矩负载的配合关系称为匹配。
由公式T=kφIa,T电机输出转矩,k系数,φ磁通,Ia电枢电流,意思就是负载转矩等于电机额定转矩时(T=TL),这时候只要保持磁通φ恒定,无论如何调速这时候电机的效率都能达到最高。这就是V/F控制方式是恒转矩调速方式。
这里我们再说下工频以下高速和低速的转矩,从公式V=E1+E,电机在低速运行时感应电动势很小,定子阻抗的压降就不能忽略了,此时E和V就相差很大,导致E/F变小,也就是磁通变小,此时电机输出的转矩就会变小,这时候就需要对转矩进行补偿,方式就是增大电源电压。因此在工频以下高速运转和低速运转尽管的恒转矩方式,但电机输出的转矩还是有差别的,高速运转时电机的输出转矩是大于低速运转的。
因此在使用变频器采用V/F调试时尽量在高频段运行,如果需要低速,应该通过减速机来减速同时提高转矩。还需要了解下空间矢量控制方式,“具有优异的矢量控制性能,实现转矩控制、速度控制的一体化,能满足不同客户多种应用需求”。
我们考虑这样一个问题:1、一个电机采用变频器以10Hz的转速带动T负载旋转,2、电机采用变频器以50Hz的转速同时通过5:1的减速机带动T负载旋转。
希望能帮到你!
香港人用什么聊天软件?
香港人用什么聊天软件做为日常沟通交流?
1,MSN
是微软公司旗下的门户网站,在1995年开始,该软件对用户提供包括娱乐,文化,搜索等各种方面的内容,满足了用户对于互联网的基本需求。并且可以同工作伙伴进行交流,是一款即时通讯软件。在21世纪之交前后影响巨大,客户众多,在世界范围内都有巨大的影响力。在现今,新的交流软件逐渐代替了msn。
2,facebook
facebook是全球最大的社交软件,它在全世界100多个国家都是排名第一的社交软件,地位就相当我们国内的qq和微信,在facebook有视频及发信息的功能,类似国内的抖音,可以展示个人主页,个人的状态等,作为个人及商业用途都可以。现今是港人与外界朋友及合作伙伴(除国内朋友外)较多使用的社交软件。
3,Whatsapp
WhatsApp Messenger,简称WhatsApp,是Facebook公司的旗下一款用于智能手机的跨平台加密即时通信应用程序。该软件透过互联网进行语音通话及影像通话,并使用标准移动网络电话号码向其他用户发送短信、文档文件、PDF文件、图片、视频、音乐、联系人信息、用户位置及录音档等。
该软件的私密性较高,需电话号码才能开通,且有追踪功能,作为安卓手机特有的交友软件,港人大多使用此软件进行沟通。座式的电话已少用了,逐渐被手机的whatsapp替代去做交流。
现代科技不断发展,新兴的科技产品逐步地,多方面地满足人们的需要。不知未来的世界,港人及全世界的人民
又会用什么电子产品进行沟通交流呢?
还没有评论,来说两句吧...