資源簡介
語音特征識別是模式識別的一個重要研究內容,對本案例,提取了民歌,古箏、搖滾和流行四類不同音樂的24維特征向量各500組,希望用BP網絡實現對著四類音樂的有效分類。1) 比較采用2-3種不同的隱含層神經元個數對分類精度的影響;2) 采用不同訓練算法,比較traingd,traingdm,traingdx以及trainlm的效果(精度和收斂速度)。包括源程序和神經網絡結構示意圖,計算結果及分析。

代碼片段和文件信息
%?2018年11月22日?by?zhangyaokun
%?BP?identification
clear?all;
close?all;
%%?語音數據預處理方法:先隨機打亂數據,再對數據進行歸一化,然后可以直接順序選取訓練數據和測試數據
%?load?data1.mat;?load?data2.mat;?load?data3.mat;?load?data4.mat;?%加載原數據
%?Ori_Data1=[c1;c2;c3;c4];??%全部的原始數據?2000*25
%?rowrank?=?randperm(size(Ori_Data1?1));?%?隨機打亂的數字,從1~行數打亂
%?Ori_Data?=?Ori_Data1(rowrank?:);%%按照rowrank打亂矩陣的行數?2000*25
%?
%?%輸入數據處理:歸一化
%?Ori_Data_X?=?Ori_Data(:2:25);??%取出原始數據中的特征向量?2000*24
%?FlattenedData?=?Ori_Data_X(:)‘;?%?展開矩陣為一列,然后轉置為一行。
%?MappedFlattened?=?mapminmax(FlattenedData);?%?對整個矩陣的數據進行歸一化,到[-11]之間
%?MappedData?=?reshape(MappedFlattened?size(Ori_Data_X));?%?還原為原始矩陣形式。此處不需轉置回去,因為reshape恰好是按列重新排序??2000*24
%?X=MappedData(1:1500:)‘;?Xc=MappedData(1501:2000:)‘;?%前1500個數據全部作為訓練數據,后500個數據作為測試數據
%?
%?%輸出數據處理:%定義輸出向量?分別為[1?0?0?0]?[0?1?0?0]?[0?0?1?0]?[0?0?0?1]
%?To=?Ori_Data(:1)‘;%取出第一列元素為輸出
%?Tt=[1?0?0?0];??????????????????????????????????????????????????????????
%?for?i=1:1:2000
%?????switch?To(i)
%?????????case?1
%?????????????Tt(i:)=[1?0?0?0];
%?????????case?2
%?????????????Tt(i:)=[0?1?0?0];??
%?????????case?3
%?????????????Tt(i:)=[0?0?1?0];
%?????????case?4
%?????????????Tt(i:)=[0?0?0?1];????
%?????end
%?end
%?T=Tt(1:1500:)‘;???Tc=Tt(1501:2000:)‘;
%?save(‘traindata_X‘‘X‘);?save(‘traindata_Xc‘‘Xc‘);?%保存訓練數據
%?save(‘traindata_To‘‘To‘);save(‘traindata_T‘‘T‘);?save(‘traindata_Tc‘‘Tc‘);??%保存測試數據??
%?
%?clearvars?-except?X?T?Xc?Tc?To;??%清除其余變量,僅保留訓練數據和測試數據
%上面的程序只需要運行一遍
?load?traindata_X;?load?traindata_T;?load?traindata_Xc;?load?traindata_Tc;?load?traindata_To;%加載訓練數據和測試數據
?%%?BP網絡結構及參數初始化
?%?BP網絡結構為?24-10-4
?Hid_num?=?10;
?Func=0;
?
[RQ]=?size(X);
[S~]=?size(T);
[ScQc]=?size(Tc);
%%?使用不同的隱含層數目訓練網絡??
%?for?k=5:5:40?%不同的隱含層數目
%?????Hid_num?=?k;
%?????
%?????net=newff(XTHid_num);??%建立BP神經網絡?{‘logsig‘‘purelin‘}‘trainlm‘
%?????switch?Func??%選擇訓練函數
%?????????case?1
%??????????????net.?trainFcn=‘traingd‘;
%?????????case?2
%??????????????net.?trainFcn=‘traingdm‘;
%?????????case?3
%??????????????net.?trainFcn=‘traingdx‘;
%?????????otherwise
%??????????????net.?trainFcn=‘trainlm‘;
%?????end?
%?
%?????net.trainParam.epochs=2000;??%設置訓練次數
%?????net.trainParam.max_fail?=?50;
%?????net.trainParam.goal=0.005;??%設置mean?square?error,?均方誤差
%?????net.trainParam.lr=0.03;?%設置學習速率
%?
%?????net.iw{11}=rands(Hid_numR);??%隱含層神經元的初始權值
%?????net.lw{21}=rands(SHid_num);??%輸出層神經元的初始權值
%?????net.b{1}=rands(Hid_num1);??%隱含層神經元的初始偏置
%?????net.b{2}=rands(S1);??%輸出層神經元的初始偏置
%?????[nettr_gd]=train(netXT);??%訓練網絡
%?
%?????A=sim(netX);??%測試網絡
%?????E=T-A;??%測試誤差
%?????error?=?sumsqr(E)/(S*Q)??%測試結果的的MSE
%?????A1=sim(netXc);??%測試網絡
%?????E1=Tc-A1;??%測試誤差
%?????error_c1?=?sumsqr(E1)/(Sc*Qc)??%測試結果的的MSE
%?????for?i=1:500??????
%?????????Res(i)=find(A1(:i)==max(A1(:i)));?%以能夠識別出最大值的趨勢,作為正確識別的標準
%?????end
%?????E2=To(:1501:2000)-Res;
%?????I=find(E2(:)~=0);??%識別錯誤的數據
%?????length(I)?????%識別錯誤的個數
%?????
%?????pause
%?en
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-04-25?02:29??BP_Music_recog\
?????文件???????22690??2018-11-28?12:08??BP_Music_recog\20_elm.JPG
?????文件???????20147??2018-11-28?12:10??BP_Music_recog\20_gd.JPG
?????文件???????20128??2018-11-28?12:11??BP_Music_recog\20_gdm.JPG
?????文件???????19530??2018-11-28?12:12??BP_Music_recog\20_gdx.JPG
?????文件????????4994??2018-11-28?12:33??BP_Music_recog\BP_Music_recog.m
?????文件???????93015??2009-08-29?16:54??BP_Music_recog\data1.mat
?????文件???????92845??2009-08-29?16:54??BP_Music_recog\data2.mat
?????文件???????92937??2009-08-29?16:54??BP_Music_recog\data3.mat
?????文件???????93438??2009-08-29?16:54??BP_Music_recog\data4.mat
?????文件???????22569??2018-11-28?11:48??BP_Music_recog\elm_10.JPG
?????文件???????22082??2018-11-28?11:49??BP_Music_recog\elm_15.JPG
?????文件???????22581??2018-11-28?11:51??BP_Music_recog\elm_20.JPG
?????文件???????22720??2018-11-28?11:52??BP_Music_recog\elm_25.JPG
?????文件???????22978??2018-11-28?12:01??BP_Music_recog\elm_30.JPG
?????文件???????22507??2018-11-28?11:55??BP_Music_recog\elm_35.JPG
?????文件???????22085??2018-11-27?16:59??BP_Music_recog\elm_40.JPG
?????文件???????22867??2018-11-28?11:47??BP_Music_recog\elm_5.JPG
?????文件???????25454??2018-11-27?17:02??BP_Music_recog\error.jpg
?????文件?????????912??2018-11-28?11:31??BP_Music_recog\traindata_T.mat
?????文件?????????435??2018-11-28?11:31??BP_Music_recog\traindata_Tc.mat
?????文件?????????854??2018-11-28?11:31??BP_Music_recog\traindata_To.mat
?????文件??????273878??2018-11-28?11:31??BP_Music_recog\traindata_X.mat
?????文件???????91390??2018-11-28?11:31??BP_Music_recog\traindata_Xc.mat
?????文件????????2458??2018-11-28?10:10??BP_Music_recog\work3.m
?????文件??????191558??2019-04-25?02:28??語音特征識別-神經網絡應用.docx
評論
共有 條評論