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

資源簡介

BP三層神經網絡實現C++代碼注釋詳細

資源截圖

代碼片段和文件信息

//BP
//1.計算各層輸出
//2.計算糾偏責任
//3.反向調整權值和偏置值
#include?
#include?
#include?
#define N?100100???//訓練數據數+測試數據數
using?namespace?std;
double?outputErr(double?o?double?t)?{???//計算輸出層神經元糾偏職責
double?e1?=?o*(1?-?o)*(t?-?o);
return?e1;
}
double?hideErr(double?r1?double?r2?double?w1?double?w2?double?h)?{?????//計算隱藏層神經元糾偏職責
double?temp?=?(r1*w1?+?r2?*?w2)*(1?-?h)*h;
return?temp;
}
double?updateWeight(double?w?double?lr?double?h?double?responsibility)?{ //更新權值
double?temp?=?(w?+?lr?*?responsibility?*?h);
return??temp;
}
double?sigmoid(double?x)?{????//激活函數sigmoid
x?=?-x;
double?temp?=?(1?/?(1?+?exp(x)));
return?temp;
}
double?calculation(double?h1?double?h2?double?w1?double?w2?double?b1?double?b2)?{???//計算神經元實際輸出
double?temp?=?sigmoid(h1*w1?+?h2*w2?+?b1?+?b2);
return?temp;
}

int?main()?{
static?double?x[N?-?100][2];??//訓練集
static?double?y[N?-?100]; ??//訓練集
//初始化訓練數據
for?(int?i?=?0;?i? x[i][0]?=?rand()?%?100?/?(double)101;
x[i][1]?=?rand()?%?100?/?(double)101;
if?((x[i][0]?+?x[i][1])?>?1)?{ ????//x1+x2>1將預期輸出置為1
y[i]?=?1;
}
else
y[i]?=?0;
}
double?lr?=?0.1;????// 學習效率(步長)
//權重
double?w1[6]?=?{?1-1-1110.5?};?????//第一層的4個權重
double?w2[6]?=?{?-11-1110.5?}; //第二層的4個權重
double?w3[3]?=?{?1-1?1?}; //輸出層2個權重
//責任
double?r1[2];???????//第一層神經元糾偏職責
double?r2[2];?????//第二層神經元糾偏職責
double?r3;???????//輸出層神經元糾偏職責
?//實際輸出
double?o1[2];????????//第一層神經元實際輸出
double?o2[2]; //第二層神經元實際輸出
double?o3; //輸出層神經元實際輸出
double?trueNumber?=?0;???//統計訓練后,準確率
for?(int?i?=?0;?i?
//計算隱藏層第一層實際輸出
o1[0]?=?calculation(x[i][0]?x[i][1]?w1[0]?w1[2]?w1[4]?0);
o1[1]?=?calculation(x[i][0]?x[i][1]?w1[1]?w1[3]?0?w1[5]);
//計算隱藏層第二層實際輸出
o2[0]?=?calculation(o1[0]?o1[1]?w2[0]?w2[2]?w2[4]?0);
o2[1]?=?calculation(o1[0]?o1[1]?w2[1]?w2[3]?0?w2[5]);
//計算輸出層實際輸出
o3?=?calculation(o2[0]?o2[1]?w3[0]?w3[1]?w3[2]?0);

//計算輸出層糾偏責任
r3?=?outputErr(o3?y[i]);
//計算隱藏層糾偏責任
r2[0]?=?hideErr(r3?0?w3[0]?0?o2[0]);
r2[1]?=?hideErr(r3?0?w3[1]?0?o2[1]);

r1[0]?=?hideErr(r2[0]?r2[1]?w2[0]?w2[1]?o1[0]);
r1[1]?=?hideErr(r2[0]?r2[1]?w2[2]?w2[3]?o1[1]);

//更新權值
w3[0]?=?updateWeight(w3[0]?lr?o2[0]?r3);
w3[1]?=?updateWeight(w

評論

共有 條評論