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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器学习(一):BP神经网络(含代码及注释)

發布時間:2025/3/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习(一):BP神经网络(含代码及注释) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

    • 人工神經網絡
    • 神經網絡分類
    • BP神經網絡
    • 代碼實現

人工神經網絡

??????人們利用數學模型來模仿生物神經元傳遞信息以及做出決策等等。
??????下圖神經網絡數學模型可以等效為輸入矩陣X與系數矩陣W相乘并加上偏置項求和,并利用激活函數 f() 進行映射,從而得到輸出。其中,系數矩陣W和偏置項是需要我們利用訓練集數據進行調整優化,使得整個網絡能完成特定任務。

神經網絡分類

  • 按照連接方式,可以分為:前向神經網絡 和 反饋(遞歸)神經網絡
  • 按照學習方式,可以分為:有監督學習神經網絡 和 無監督學習神經網絡
  • 按照實現功能,可以分為:擬合(回歸)神經網絡 和 分類神經網絡
  • BP神經網絡

    BP神經網絡時人工神經網絡的一種,屬于有監督學習,主要流程:

  • 準備數據集,搭建網絡模型,參數初始化
  • 正向傳播,計算結點輸出值
  • 反向傳播,計算每個結點誤差,調整權值參數
  • 直至網絡收斂到規定值
  • 正向傳播:

    反向傳播,計算誤差


    調整權值W ------> W’

    代碼實現

    利用MATLAB代碼(含詳細注釋)實現BP神經網絡,其中最為核心的就是newff()函數,大家可以看看源碼(在命令執行窗口中輸入edit newff),其實就是上述流程的數學推導計算:

    % I. 清空環境變量 clear all clc% II. 訓練集/測試集產生 % 1. 導入數據集,可以替換為自己的數據集 load spectra_data.mat% 2. 隨機產生訓練集和測試集 temp = randperm(size(NIR,1)); % 訓練集——50個樣本,P為輸入數據,T為對應輸入數據的輸出結果 P_train = NIR(temp(1:50),:)'; T_train = octane(temp(1:50),:)'; % 測試集——10個樣本 P_test = NIR(temp(51:end),:)'; T_test = octane(temp(51:end),:)'; N = size(P_test,2);% III. 數據歸一化 [p_train, ps_input] = mapminmax(P_train,0,1); p_test = mapminmax('apply',P_test,ps_input);[t_train, ps_output] = mapminmax(T_train,0,1);% IV. BP神經網絡創建、訓練及仿真測試 % 1. 創建網絡,[9,9]意思為網絡含有兩個隱藏層,每層有9個單元 net = newff(p_train,t_train,[9,9]);% 2. 設置訓練參數 net.trainParam.epochs = 1000;%訓練批次 net.trainParam.goal = 1e-12;%訓練目標,誤差小于1e-12即結束訓練 net.trainParam.lr = 0.01;%設置學習率 %另外也可以設置其他訓練參數,可看newff()函數介紹手冊% 3. 訓練網絡 net = train(net,p_train,t_train);% 4. 仿真測試 t_sim = sim(net,p_test);% 5. 數據反歸一化 T_sim = mapminmax('reverse',t_sim,ps_output);% V. 性能評價 % 1. 相對誤差error error = abs(T_sim - T_test)./T_test;% 2. 決定系數R^2 R2 = (N * sum(T_sim .* T_test) - sum(T_sim) * sum(T_test))^2 / ((N * sum((T_sim).^2) - (sum(T_sim))^2) * (N * sum((T_test).^2) - (sum(T_test))^2)); % 3. 結果對比 result = [T_test' T_sim' error']% VI. 繪圖 figure plot(1:N,T_test,'b:*',1:N,T_sim,'r-o') legend('真實值','預測值') xlabel('預測樣本') ylabel('xxxx') string = {'xxxxxx預測結果對比';['R^2=' num2str(R2)]}; title(string)

    這是matlab中建立的網絡模型簡圖

    結果圖:

    總結

    以上是生活随笔為你收集整理的机器学习(一):BP神经网络(含代码及注释)的全部內容,希望文章能夠幫你解決所遇到的問題。

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