該演算法需利用高斯隨機分布來製造**,因此另封裝乙個randn()函式製造偽高斯隨機數,然後在forecast()函式中對樣本進行網路訓練,並利用訓練結果進行網路**,
#gauss.h/
#define pi 3.1415926535897
#define rd (rand()/(rand_max+1.0))
double randn(int type)
/////**演算法///
vector< vector< double > > input;訓練輸入樣本
vector< vector< double > > output;//訓練輸出樣本
vector< vector< double > > preinput;**輸入樣本
vector< vector< double > > preoutput; ///**輸出結果
int input_col;//定義訓練輸入樣本列,資料計算以列為單位,與matlab中列向量同意義
int input_row;//定義訓練輸入樣本行
int inputtest_row;//定義訓練輸出樣本行
int output_col;//定義**輸入樣本列,即需要**的資料,1列
int output_row;//定義**輸入樣本行
int outputtest_row;//定義**輸出樣本行,1列
int maxgen; //迭代次數
int n; //**節點個數
double input[20][1];
///以下為個訓練向量與**向量結構初始化,**時需進行資料有效化填充
int i=0;
input.resize(input_row);
for(i=0;i,並定義命名空間,using namespace std;///
///規避double陣列只能靜態定義的特性///
///除錯中發現double二維及以上常規陣列無法進行指標與陣列名之間的轉化/
/具體錯誤cannot convert double** to double
void forecast()
vector< vector< double > > a_1(1);
for(i=0;i<1;i++)
vector< vector< double > > a_2(1);
for(i=0;i<1;i++)
for(i = 0;i <1;i++) }
vector< vector< double > > b(1);
for(i=0;i<1;i++)
vector< vector< double > > b_1(1);
for(i=0;i<1;i++)
vector< vector< double > > b_2(1);
for(i=0;i<1;i++)
for(i = 0;i <1;i++)
} vector< vector< double > > y(1);
for(i=0;i<1;i++)
vector< vector< double > > net(1);
for(i=0;i<1;i++)
vector< vector< double > > net_ab(1);
for(i=0;i<1;i++)
vector< vector< double > > d_wjk(n);
for(i=0;i> d_wij(output_col);
for(i=0;i> d_a(1);
for(i=0;i<1;i++)
vector< vector< double > > d_b(1);
for(i=0;i<1;i++)
//%% 輸入輸出資料歸一化
double tempmax = 0.0,tempmin = 0.0;
vector< double > input_max(input_col);
vector< double > input_min(input_col);
vector< vector< double > > input1(input_row);
for(i=0;itempmax)
tempmax = input[j][i];
if(input[j][i] < tempmin)
tempmin = input[j][i];
} input_max[i] = tempmax;
input_min[i] = tempmin;
for(j = 0;j < input_row;j++)
}vector< double > output_max(output_col);
vector< double > output_min(output_col);
vector< vector< double > > preinput1(output_row);
for(i=0;itempmax)
tempmax = preinput[j][i];
if(preinput[j][i] < tempmin)
tempmin = preinput[j][i];
} output_max[i] = tempmax;
output_min[i] = tempmin;
for(j = 0;j < output_row;j++)
}//%% 網路訓練
vector< double > x(input_col);
vector< double > yqw(output_col);
vector< double > error(maxgen);
double temp = 0.0;
for(i = 0; i < maxgen; i++)
inputtest_max[i] = tempmax;
inputtest_min[i] = tempmin;
for(j = 0;j < inputtest_row;j++)
}/網路**
vector< double > x_test(input_col);
vector< vector< double > > yuce(1);
for(i=0;i<1;i++)
for(i = 0; i yun(outputtest_row);
for(i = 0; i < outputtest_row; i ++)
return;
}
線性神經網路 matlab神經網路
自適應線性元件20世紀50年代末由widrow和hoff提出,主要用於線性逼近乙個函式式而進行模式聯想以及訊號濾波 模型識別和控制等。線性神經網路和感知器的區別是,感知器只能輸出兩種可能的值,而線性神經網路的輸出可以取任意值。線性神經網路採用widrow hoff學習規則,即lms least me...
MATLAB神經網路
ai 菌這幾天沉迷於數模的ai菌來補發文章啦。深深地體會到雖然神經網路工具的api已經有了非常完備的封裝,但是資料的預處理真的讓人感覺非常的麻煩。當你把所有的異常點一一清理,有一種 掘地求公升終於爬出大氣層 飛向太空的感覺 雖然ai菌連夢想開始的地方都爬不出去 所以今天就來介紹一下這幾天的收穫吧 a...
從生物神經網路到人工神經網路
如今提及人工智慧,大家期待的一定是某種可以 學習 的方法,這種方法使用數學模型從資料中獲取模式的某種表示。在眾多 學習 方法中,獲得最多關注,承載最多期望的非 神經網路 莫屬。既然我們將這種數學方法稱作神經網路,那麼他必然和廣泛存在於生物體內的神經網路存在某種聯絡。讓我們考察乙個典型的神經連線。每個...