91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 379KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-18
  • 語言: 其他
  • 標簽: matlab??

資源簡介

一個人工神經元網絡是由一個多層神經元結構組成,每一層神經元擁有輸入(它的輸入是前一層神經元的輸出)和輸出,我們把神經元和與之對應的神經元之間的連線用生物學的名稱,叫做突觸,在數學模型中每個突觸有一個加權數值,稱做權重,此時第i層上的某個神經元所得到的輸出等于每一個權重乘以第i-1層上對應的神經元的輸出之和,最后再通過激活函數來對輸出進行量化,在與閾值相比較判斷是否屬于某一類。

資源截圖

代碼片段和文件信息

clear
clc
load?fisheriris;%導入數據
Iris={meas(:1)meas(:2)meas(:3)meas(:4)species};%cell
[~n]=size(Iris);
for?i=1:n-1
data(:i)=Iris{1i};
end
[mn]=size(data);
for?i=1:m
if?strcmp(Iris{15}{i1}‘setosa‘)
data(i5:7)=[1?0?0];
elseif??strcmp(Iris{15}{i1}?‘versicolor‘)
data(i5:7)=[0?1?0];
else
data(i5:7)=[0?0?1];
end
end
%數據歸一化處理[01]區間內
x_max=max(data);
x_min=min(data);
data=(data-ones(m1)*x_min)./(ones(m1)*(x_max-x_min));
%?這里可用函數data=mapminmax(data01)替換
%但data需要轉置因為mapminmax只能對行進行歸一化
%%
%K折
indices=crossvalind(‘Kfold‘data(1:1507)5);%進行隨機分包
z1=0;z2=0;%計算平均準確率
alpha=4;%輸入神經元數目
beta=10;%隱層神經元數目
lamda=3;%輸出神經元數目
%%
s=rng;
rand(alphabeta);
rand(betalamda);
rand(1beta);
rand(1lamda);
rng(s);
%%保證每次運行生成的隨機數相同
%訓練
for?k=1:1:5
%%%%%%%%%%%%%%%%%%%自定義%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
test1=(indices?==?k);%邏輯驗證
train1=~test1;%邏輯驗證
c_test=data(test11:4);
c_test_label=data(test15:7);
x_train=data(train11:4);
x_train_label=data(train15:7);
%%
[mn]=size(x_train);
%生成隨機初始向量
W1=rand(alphabeta);%輸入層和隱層之間的權值矩陣
W2=rand(betalamda);%隱層和輸出層間的權值矩陣
B1=rand(1beta);%隱層閾值矩陣
B2=rand(1lamda);%輸出層閾值矩陣
B22=B2;
W11=W1;
Eta=0.1;%學習率
iter_max=10000;%最大迭代次數
iter=1;
%BP神經網絡,每次僅針對一個訓練樣例更新連接權和閾值
while?iter<=iter_max
for?i=1:m
hidden_in=x_train(i:)*W1;%隱層輸入
hidden_out=sigmod(hidden_in-B1);%隱層輸出
output_in=hidden_out*W2;%輸出層輸入
output_out=sigmod(output_in-B2);%輸出層輸出
%計算誤差
E(i)=sum((output_out-x_train_label(i:)).^2);%求平方和也可用sumsqr函數
%%
%更新參數BP神經網絡中最核心的部分
g=output_out.*(1-output_out).*(x_train_label(i:)-output_out);%計算輸出層神經元的梯度項
e=hidden_out.*(1-hidden_out).*(g*W2‘);%計算隱層神經元的梯度項
Deta_W2=Eta*hidden_out‘*g;
Deta_B2=-Eta*g;
Deta_W1=Eta*x_train(i:)‘*e;
Deta_B1=-Eta*e;
W1=W1+Deta_W1;
W2=W2+Deta_W2;
B1=B1+Deta_B1;
B2=B2+Deta_B2;
end
%計算訓練集的累積誤差
E=mean(E);
if?E<1e-4??%目標誤差
iter
break
end
if?mod(iter1000)==0
iter;
end
iter=iter+1;%更新迭代次數
end
%%
%測試
[resultaccuracy]=BP_test(c_testc_test_labelW1W2B1B2);
disp(strcat(‘第‘num2str(k)‘次自定義準確率為‘num2str(accuracy*100)‘%‘))
z1=z1+accuracy;
%%%%%%%%%%%%%%%%%%%自定義%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%調包%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
net?=?newff(?x_train‘?x_train_label‘?10);
%設置訓練參數
net.trainParam.showWindow?=?false;
net.trainParam.showCommandLine?=?false;
net.trainparam.epochs?=?10000?;%允許最大訓練步數500步
net.trainparam.goal?=?0.0001?;%訓練目標最小誤差0.01
net.trainParam.lr?=?0.1?;%學習速率0.1
%開始訓練
net?=?train(?net?x_train‘?x_train_label‘)?;
%測試
Y?=?sim(netc_test‘)?;
%統計識別正確率,列最大值所在位置對比
[max_Yindex1]=max(Y[]1);??%求最大值所在位置
[max_c_test_labelindex2]=max(c_test_label‘[]1);
a=0;
for?i=1:1:30
if?index1(i)==index2(i)
a=a+1;
end
end
r=a/30;
z2=z2+r;
disp(strcat(‘第‘num2str(k)‘次調包準確率為‘num2str(r*100)‘%‘))
%%%%%%%%%%%%%%%%%%%調包%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
end
disp(strcat(‘自定義平均準確率為‘num2str(z1/5*100)‘%‘))
disp(strcat(‘調包平均準確率為‘num2str(z2/5*100)‘%‘))

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????3323??2020-07-02?15:57??bp_iris.m
?????文件?????????411??2020-06-08?10:30??BP_test.m
?????文件??????????58??2020-06-08?10:28??sigmod.m
?????文件??????392886??2020-07-05?12:27??神經網絡iris.docx

評論

共有 條評論