日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

如何利用matlab做BP神经网络分析(包括利用matlab神经网络工具箱)

發布時間:2024/3/13 循环神经网络 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何利用matlab做BP神经网络分析(包括利用matlab神经网络工具箱) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如何利用matlab做BP神經網絡分析(包括利用matlab神經網絡工具箱)

轉載:https://blog.csdn.net/xgxyxs/article/details/53265318
最近一段時間在研究如何利用預測其銷量個數,在網上搜索了一下,發現了很多模型來預測,比如利用回歸模型、時間序列模型,GM(1,1)模型,可是自己在結合實際的工作內容,發現這幾種模型預測的精度不是很高,于是再在網上進行搜索,發現神經網絡模型可以來預測,并且有很多是結合時間序列或者SVM(支持向量機)等組合模型來進行預測,本文結合實際數據,選取了常用的BP神經網絡算法,其算法原理,因網上一大堆,所以在此不必一一展示,并參考了bp神經網絡進行交通預測的Matlab源代碼這篇博文,運用matlab 2016a,給出了下面的代碼,并最終進行了預測

  • clc
  • clear all
  • close all
  • %bp 神經網絡的預測代碼
  • %載入輸出和輸入數據
  • load C:\Users\amzon\Desktop\p.txt;
  • load C:\Users\amzon\Desktop\t.txt;
  • %保存數據到matlab的工作路徑里面
  • save p.mat;
  • save t.mat;%注意t必須為行向量
  • %賦值給輸出p和輸入t
  • p=p;
  • t=t;
  • %數據的歸一化處理,利用mapminmax函數,使數值歸一化到[-1.1]之間
  • %該函數使用方法如下:[y,ps] =mapminmax(x,ymin,ymax),x需歸化的數據輸入,
  • %ymin,ymax為需歸化到的范圍,不填默認為歸化到[-1,1]
  • %返回歸化后的值y,以及參數ps,ps在結果反歸一化中,需要調用
  • [p1,ps]=mapminmax(p);
  • [t1,ts]=mapminmax(t);
  • %確定訓練數據,測試數據,一般是隨機的從樣本中選取70%的數據作為訓練數據
  • %15%的數據作為測試數據,一般是使用函數dividerand,其一般的使用方法如下:
  • %[trainInd,valInd,testInd] = dividerand(Q,trainRatio,valRatio,testRatio)
  • [trainsample.p,valsample.p,testsample.p] =dividerand(p,0.7,0.15,0.15);
  • [trainsample.t,valsample.t,testsample.t] =dividerand(t,0.7,0.15,0.15);
  • %建立反向傳播算法的BP神經網絡,使用newff函數,其一般的使用方法如下
  • %net = newff(minmax(p),[隱層的神經元的個數,輸出層的神經元的個數],{隱層神經元的傳輸函數,輸出層的傳輸函數},'反向傳播的訓練函數'),其中p為輸入數據,t為輸出數據
  • %tf為神經網絡的傳輸函數,默認為'tansig'函數為隱層的傳輸函數,
  • %purelin函數為輸出層的傳輸函數
  • %一般在這里還有其他的傳輸的函數一般的如下,如果預測出來的效果不是很好,可以調節
  • %TF1 = 'tansig';TF2 = 'logsig';
  • %TF1 = 'logsig';TF2 = 'purelin';
  • %TF1 = 'logsig';TF2 = 'logsig';
  • %TF1 = 'purelin';TF2 = 'purelin';
  • TF1='tansig';TF2='purelin';
  • net=newff(minmax(p),[10,1],{TF1 TF2},'traingdm');%網絡創建
  • %網絡參數的設置
  • net.trainParam.epochs=10000;%訓練次數設置
  • net.trainParam.goal=1e-7;%訓練目標設置
  • net.trainParam.lr=0.01;%學習率設置,應設置為較少值,太大雖然會在開始加快收斂速度,但臨近最佳點時,會產生動蕩,而致使無法收斂
  • net.trainParam.mc=0.9;%動量因子的設置,默認為0.9
  • net.trainParam.show=25;%顯示的間隔次數
  • % 指定訓練參數
  • % net.trainFcn = 'traingd'; % 梯度下降算法
  • % net.trainFcn = 'traingdm'; % 動量梯度下降算法
  • % net.trainFcn = 'traingda'; % 變學習率梯度下降算法
  • % net.trainFcn = 'traingdx'; % 變學習率動量梯度下降算法
  • % (大型網絡的首選算法)
  • % net.trainFcn = 'trainrp'; % RPROP(彈性BP)算法,內存需求最小
  • % 共軛梯度算法
  • % net.trainFcn = 'traincgf'; %Fletcher-Reeves修正算法
  • % net.trainFcn = 'traincgp'; %Polak-Ribiere修正算法,內存需求比Fletcher-Reeves修正算法略大
  • % net.trainFcn = 'traincgb'; % Powell-Beal復位算法,內存需求比Polak-Ribiere修正算法略大
  • % (大型網絡的首選算法)
  • %net.trainFcn = 'trainscg'; % ScaledConjugate Gradient算法,內存需求與Fletcher-Reeves修正算法相同,計算量比上面三種算法都小很多
  • % net.trainFcn = 'trainbfg'; %Quasi-Newton Algorithms - BFGS Algorithm,計算量和內存需求均比共軛梯度算法大,但收斂比較快
  • % net.trainFcn = 'trainoss'; % OneStep Secant Algorithm,計算量和內存需求均比BFGS算法小,比共軛梯度算法略大
  • % (中型網絡的首選算法)
  • %net.trainFcn = 'trainlm'; %Levenberg-Marquardt算法,內存需求最大,收斂速度最快
  • % net.trainFcn = 'trainbr'; % 貝葉斯正則化算法
  • % 有代表性的五種算法為:'traingdx','trainrp','trainscg','trainoss', 'trainlm'
  • %在這里一般是選取'trainlm'函數來訓練,其算對對應的是Levenberg-Marquardt算法
  • net.trainFcn='trainlm';
  • [net,tr]=train(net,trainsample.p,trainsample.t);
  • %計算仿真,其一般用sim函數
  • [normtrainoutput,trainPerf]=sim(net,trainsample.p,[],[],trainsample.t);%訓練的數據,根據BP得到的結果
  • [normvalidateoutput,validatePerf]=sim(net,valsample.p,[],[],valsample.t);%驗證的數據,經BP得到的結果
  • [normtestoutput,testPerf]=sim(net,testsample.p,[],[],testsample.t);%測試數據,經BP得到的結果
  • %將所得的結果進行反歸一化,得到其擬合的數據
  • trainoutput=mapminmax('reverse',normtrainoutput,ts);
  • validateoutput=mapminmax('reverse',normvalidateoutput,ts);
  • testoutput=mapminmax('reverse',normtestoutput,ts);
  • %正常輸入的數據的反歸一化的處理,得到其正式值
  • trainvalue=mapminmax('reverse',trainsample.t,ts);%正常的驗證數據
  • validatevalue=mapminmax('reverse',valsample.t,ts);%正常的驗證的數據
  • testvalue=mapminmax('reverse',testsample.t,ts);%正常的測試數據
  • %做預測,輸入要預測的數據pnew
  • pnew=[313,256,239]';
  • pnewn=mapminmax(pnew);
  • anewn=sim(net,pnewn);
  • anew=mapminmax('reverse',anewn,ts);
  • %絕對誤差的計算
  • errors=trainvalue-trainoutput;
  • %plotregression擬合圖
  • figure,plotregression(trainvalue,trainoutput)
  • %誤差圖
  • figure,plot(1:length(errors),errors,'-b')
  • title('誤差變化圖')
  • %誤差值的正態性的檢驗
  • figure,hist(errors);%頻數直方圖
  • figure,normplot(errors);%Q-Q圖
  • [muhat,sigmahat,muci,sigmaci]=normfit(errors);%參數估計 均值,方差,均值的0.95置信區間,方差的0.95置信區間
  • [h1,sig,ci]= ttest(errors,muhat);%假設檢驗
  • figure, ploterrcorr(errors);%繪制誤差的自相關圖
  • figure, parcorr(errors);%繪制偏相關圖
  • 運行之后的,結果如下:

    BP神經網絡的結果分析圖

    訓練數據的梯度和均方誤差之間的關系圖

    驗證數據的梯度與學習次數

    殘差的正態的檢驗圖(Q-Q圖)

    ?

    ?

    在網上,發現可以通過神經網絡工具箱這個GUI界面來創建神經網絡,其一般的操作步驟如下:

    1:在輸入命令里面輸入nntool命令,或者在應用程序這個選項下找到Netrual Net Fitting 這個應用程序,點擊打開,就能看見如下界面

    ?

    ?

    ?

    2:輸入數據和輸出數據的導入(在本文中選取了matlab自帶的案例數據)


    3:隨機選擇三種類型的數據所占的樣本量的比例,一般選取默認即可



    4:隱層神經元的確定
    ?????????????????????????????????????????????????????????????????????????????


    5:訓練算法的選取,一般是選擇默認即可,選擇完成后點擊<train>按鈕即可運行程序




    6:根據得到的結果,一般是MSE的值越小,R值越接近1,其訓練的效果比較,并第二張圖給出了神經網絡的各參數的設置以及其最終的結果,其擬合圖R越接近1,模型擬合的更好








    最終的結果圖

    7:如果所得到的模型不能滿足你的需求,則需重復上述的步驟直至能夠得到你想要的精確度

    8:將最終的得到的各種數據以及其擬合值進行保存,然后查看,就可以得到所要的擬合值



    MATLAB 與神經網絡相關的函數總結如下:

  • 圖形用戶界面功能
  • nnstart - 神經網絡啟動GUI?
  • nctool - 神經網絡分類工具?
  • nftool - 神經網絡的擬合工具?
  • nntraintool - 神經網絡的訓練工具?
  • nprtool - 神經網絡模式識別工具?
  • ntstool - NFTool神經網絡時間序列的工具?
  • nntool - 神經網絡工具箱的圖形用戶界面。?
  • 查看 - 查看一個神經網絡。?
  • 網絡的建立功能
  • cascadeforwardnet - 串級,前饋神經網絡。?
  • competlayer - 競爭神經層。?
  • distdelaynet - 分布時滯的神經網絡。?
  • elmannet - Elman神經網絡。?
  • feedforwardnet - 前饋神經網絡。?
  • fitnet - 函數擬合神經網絡。?
  • layrecnet - 分層遞歸神經網絡。?
  • linearlayer - 線性神經層。?
  • lvqnet - 學習矢量量化(LVQ)神經網絡。?
  • narnet - 非線性自結合的時間序列網絡。?
  • narxnet - 非線性自結合的時間序列與外部輸入網絡。?
  • newgrnn - 設計一個廣義回歸神經網絡。?
  • newhop - 建立經常性的Hopfield網絡。?
  • newlind - 設計一個線性層。?
  • newpnn - 設計概率神經網絡。?
  • newrb - 徑向基網絡設計。?
  • newrbe - 設計一個確切的徑向基網絡。?
  • patternnet - 神經網絡模式識別。?
  • 感知 - 感知。?
  • selforgmap - 自組織特征映射。?
  • timedelaynet - 時滯神經網絡。?
  • 利用網絡
  • 網絡 - 創建一個自定義神經網絡。?
  • SIM卡 - 模擬一個神經網絡。?
  • 初始化 - 初始化一個神經網絡。?
  • 適應 - 允許一個神經網絡來適應。?
  • 火車 - 火車的神經網絡。?
  • DISP鍵 - 顯示一個神經網絡的屬性。?
  • 顯示 - 顯示的名稱和神經網絡屬性?
  • adddelay - 添加延遲神經網絡的反應。?
  • closeloop - 神經網絡的開放反饋轉換到關閉反饋回路。?
  • formwb - 表格偏見和成單個向量的權重。?
  • getwb - 將它作為一個單一向量中的所有網絡權值和偏差。?
  • noloop - 刪除神經網絡的開放和關閉反饋回路。?
  • 開環 - 轉換神經網絡反饋,打開封閉的反饋循環。?
  • removedelay - 刪除延遲神經網絡的反應。?
  • separatewb - 獨立的偏見和重量/偏置向量的權重。?
  • setwb - 將所有與單個矢量網絡權值和偏差。?
  • Simulink的支持
  • gensim - 生成Simulink模塊來模擬神經網絡。?
  • setsiminit - 集神經網絡的Simulink模塊的初始條件?
  • getsiminit - 獲取神經網絡Simulink模塊的初始條件?
  • 神經元 - 神經網絡Simulink的模塊庫。?
  • trainb - 批具有重量與偏見學習規則的培訓。?
  • trainbfg - 的BFGS擬牛頓倒傳遞。?
  • trainbr - 貝葉斯規則的BP算法。?
  • trainbu - 與重量與偏見一批無監督學習規則的培訓。?
  • trainbuwb - 與體重無監督學習規則與偏見一批培訓。?
  • trainc - 循環順序重量/偏見的培訓。?
  • traincgb - 共軛鮑威爾比爾重新啟動梯度反向傳播。?
  • traincgf - 共軛弗萊徹-里夫斯更新梯度反向傳播。?
  • traincgp - 共軛波拉克- Ribiere更新梯度反向傳播。?
  • traingd - 梯度下降反向傳播。?
  • traingda - 具有自適應LR的反向傳播梯度下降。?
  • traingdm - 與動量梯度下降。?
  • traingdx - 梯度下降瓦特/慣性與自適應LR的反向傳播。?
  • trainlm - 采用Levenberg -馬奎德倒傳遞。?
  • trainoss - 一步割線倒傳遞。?
  • trainr - 隨機重量/偏見的培訓。?
  • trainrp - RPROP反向傳播。?
  • trainru - 無監督隨機重量/偏見的培訓。?
  • 火車 - 順序重量/偏見的培訓。?
  • trainscg - 規模化共軛梯度BP算法。?
  • 繪圖功能
  • plotconfusion - 圖分類混淆矩陣。?
  • ploterrcorr - 誤差自相關時間序列圖。?
  • ploterrhist - 繪制誤差直方圖。?
  • plotfit - 繪圖功能適合。?
  • plotinerrcorr - 圖輸入錯誤的時間序列的互相關。?
  • plotperform - 小區網絡性能。?
  • plotregression - 線性回歸情節。?
  • plotresponse - 動態網絡圖的時間序列響應。?
  • plotroc - 繪制受試者工作特征。?
  • plotsomhits - 小區自組織圖來樣打。?
  • plotsomnc - 小區自組織映射鄰居的連接。?
  • plotsomnd - 小區自組織映射鄰居的距離。?
  • plotsomplanes - 小區自組織映射重量的飛機。?
  • plotsompos - 小區自組織映射重量立場。?
  • plotsomtop - 小區自組織映射的拓撲結構。?
  • plottrainstate - 情節訓練狀態值。?
  • plotwb - 圖寒春重量和偏差值圖。?
  • 列出其他神經網絡實現的功能
  • nnadapt - 適應職能。?
  • nnderivati??ve - 衍生功能。?
  • nndistance - 距離函數。?
  • nndivision - 除功能。?
  • nninitlayer - 初始化層功能。?
  • nninitnetwork - 初始化網絡功能。?
  • nninitweight - 初始化權函數。?
  • nnlearn - 學習功能。?
  • nnnetinput - 凈輸入功能。?
  • nnperformance - 性能的功能。?
  • nnprocess - 處理功能。?
  • nnsearch - 線搜索功能。?
  • nntopology - 拓撲結構的功能。?
  • nntransfer - 傳遞函數。?
  • nnweight - 重量的功能。?
  • nndemos - 神經網絡工具箱的示威。?
  • nndatasets - 神經網絡工具箱的數據集。?
  • nntextdemos - 神經網絡設計教科書的示威。?
  • nntextbook - 神經網絡設計教科書的資訊。?
  • ?

    ?

    Save

    ?

    總結

    以上是生活随笔為你收集整理的如何利用matlab做BP神经网络分析(包括利用matlab神经网络工具箱)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。