天天看點

MATLAB神經網絡學習入門之BP神經網絡參考資源BP神經網絡簡介代碼

這裡寫自定義目錄标題

  • 參考資源
  • BP神經網絡簡介
  • 代碼

參考資源

https://www.bilibili.com/video/BV1Hx411M7Qw?p=4

BP神經網絡簡介

https://www.jianshu.com/p/9037890c9b65

代碼

%%
%BP神經網絡
%有導師學習神經網絡
%前向神經網絡(誤差反向傳播)
%要求激活函數可導/可微分
%學習算法:1. propagation 2. weight update--梯度下降
%資料歸一化?(可以應用到Julien項目的資料中)
%newff-- create feed-forward backpropagation network
%train-- train neural network
%sim-- simulate neural network
%% 随機産生訓練集和測試集
temp=randperm(size(features,1));
P_train=features(temp(1:300),:)';
T_train=activity(temp(1:300),:)';
%測試集
P_test=features(temp(301:end),:)';
T_test=activity(temp(301:end),:)';
N=size(P_test,2);
%% 資料歸一化
[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);
%% BP神經網絡建立,訓練及仿真測試
%建立網絡
net=newff(p_train,t_train,9);

%設定訓練參數
net.trainParam.epochs=1000;
net.trainParam.goal=1e-3;
net.trainParam.lr=0.01;

%訓練網絡
net=train(net,p_train,t_train);

%仿真測試
t_sim=sim(net,p_test);

%資料反歸一化
T_sim=mapminmax('reverse',t_sim,ps_output);
%% 性能評價
%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'];
%% 繪圖
figure
plot(1:N,T_test,'b:*',1:N,T_sim,'r-o')
legend('真實值','預測值')
xlabel('預測樣本')
ylabel('activity')
string={'測試集人類行為預測結果對比';[]};
title(string)
           

繼續閱讀