神經(jīng)網(wǎng)絡(luò)算法java代碼 神經(jīng)網(wǎng)絡(luò)算法csdn

如何用70行Java代碼實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)算法

如何用70行Java代碼實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)算法

創(chuàng)新互聯(lián)建站是一家專注于成都做網(wǎng)站、成都網(wǎng)站設(shè)計、成都外貿(mào)網(wǎng)站建設(shè)與策劃設(shè)計,偏關(guān)網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:偏關(guān)等地區(qū)。偏關(guān)做網(wǎng)站價格咨詢:028-86922220

import java.util.Random;

public class BpDeep{

public double[][] layer;//神經(jīng)網(wǎng)絡(luò)各層節(jié)點(diǎn)

public double[][] layerErr;//神經(jīng)網(wǎng)絡(luò)各節(jié)點(diǎn)誤差

public double[][][] layer_weight;//各層節(jié)點(diǎn)權(quán)重

public double[][][] layer_weight_delta;//各層節(jié)點(diǎn)權(quán)重動量

public double mobp;//動量系數(shù)

public double rate;//學(xué)習(xí)系數(shù)

public BpDeep(int[] layernum, double rate, double mobp){

this.mobp = mobp;

this.rate = rate;

layer = new double[layernum.length][];

layerErr = new double[layernum.length][];

layer_weight = new double[layernum.length][][];

layer_weight_delta = new double[layernum.length][][];

Random random = new Random();

for(int l=0;llayernum.length;l++){

layer[l]=new double[layernum[l]];

layerErr[l]=new double[layernum[l]];

if(l+1layernum.length){

layer_weight[l]=new double[layernum[l]+1][layernum[l+1]];

layer_weight_delta[l]=new double[layernum[l]+1][layernum[l+1]];

for(int j=0;jlayernum[l]+1;j++)

for(int i=0;ilayernum[l+1];i++)

layer_weight[l][j][i]=random.nextDouble();//隨機(jī)初始化權(quán)重

}

}

}

//逐層向前計算輸出

public double[] computeOut(double[] in){

for(int l=1;llayer.length;l++){

for(int j=0;jlayer[l].length;j++){

double z=layer_weight[l-1][layer[l-1].length][j];

for(int i=0;ilayer[l-1].length;i++){

layer[l-1][i]=l==1?in[i]:layer[l-1][i];

z+=layer_weight[l-1][i][j]*layer[l-1][i];

}

layer[l][j]=1/(1+Math.exp(-z));

}

}

return layer[layer.length-1];

}

//逐層反向計算誤差并修改權(quán)重

public void updateWeight(double[] tar){

int l=layer.length-1;

for(int j=0;jlayerErr[l].length;j++)

layerErr[l][j]=layer[l][j]*(1-layer[l][j])*(tar[j]-layer[l][j]);

while(l--0){

for(int j=0;jlayerErr[l].length;j++){

double z = 0.0;

for(int i=0;ilayerErr[l+1].length;i++){

z=z+l0?layerErr[l+1][i]*layer_weight[l][j][i]:0;

layer_weight_delta[l][j][i]= mobp*layer_weight_delta[l][j][i]+rate*layerErr[l+1][i]*layer[l][j];//隱含層動量調(diào)整

layer_weight[l][j][i]+=layer_weight_delta[l][j][i];//隱含層權(quán)重調(diào)整

if(j==layerErr[l].length-1){

layer_weight_delta[l][j+1][i]= mobp*layer_weight_delta[l][j+1][i]+rate*layerErr[l+1][i];//截距動量調(diào)整

layer_weight[l][j+1][i]+=layer_weight_delta[l][j+1][i];//截距權(quán)重調(diào)整

}

}

layerErr[l][j]=z*layer[l][j]*(1-layer[l][j]);//記錄誤差

}

}

}

public void train(double[] in, double[] tar){

double[] out = computeOut(in);

updateWeight(tar);

}

}

急求BP神經(jīng)網(wǎng)絡(luò)算法,用java實(shí)現(xiàn)?。?!

見附件,一個基本的用java編寫的BP網(wǎng)絡(luò)代碼。

BP(Back Propagation)神經(jīng)網(wǎng)絡(luò)是86年由Rumelhart和McCelland為首的科學(xué)家小組提出,是一種按誤差逆?zhèn)鞑ニ惴ㄓ?xùn)練的多層前饋網(wǎng)絡(luò),是目前應(yīng)用最廣泛的神經(jīng)網(wǎng)絡(luò)模型之一。BP網(wǎng)絡(luò)能學(xué)習(xí)和存貯大量的輸入-輸出模式映射關(guān)系,而無需事前揭示描述這種映射關(guān)系的數(shù)學(xué)方程。它的學(xué)習(xí)規(guī)則是使用最速下降法,通過反向傳播來不斷調(diào)整網(wǎng)絡(luò)的權(quán)值和閾值,使網(wǎng)絡(luò)的誤差平方和最小。BP神經(jīng)網(wǎng)絡(luò)模型拓?fù)浣Y(jié)構(gòu)包括輸入層(input)、隱層(hidden layer)和輸出層(output layer)。

rbf神經(jīng)網(wǎng)絡(luò)在java中如何實(shí)現(xiàn)原代碼

rbf神經(jīng)網(wǎng)絡(luò)有多種學(xué)習(xí)策略,首先選取中心,可以隨機(jī)選,也可采用K均值聚類,然后學(xué)習(xí)權(quán)值,可采用偽逆法(涉及矩陣的奇異值分解),也可以采用最小均方誤差法,或者進(jìn)化算法,上述方法中心是固定的,也可采用梯度下降法同時學(xué)習(xí)中心、寬度、權(quán)值,這個比較復(fù)雜。具體參考《神經(jīng)網(wǎng)絡(luò)原理》。

你用Java寫可以參考Weka,其完全開源,不過我沒有看過源碼,不知其用何種學(xué)習(xí)策略。最近用C++寫了一個簡單的rbf,即固定中心、最小均方誤差法學(xué)習(xí)權(quán)值,但我發(fā)現(xiàn)采用K均值聚類選中心跟隨機(jī)選沒有什么區(qū)別,不知二者有何區(qū)別?自己寫偽逆法對于我來說基本不可能,及其復(fù)雜,我看到過某人寫了個天書般的程序,一個函數(shù)500行。

希望對你有幫助,如果你有新發(fā)現(xiàn),歡迎與我探討,國內(nèi)估計沒多少人真正自己寫過RBF,都用MATLAB代入了事。

數(shù)學(xué)建模題 葡萄酒的評價 用bp神經(jīng)網(wǎng)絡(luò)解,求怎樣用C或C++或Java代碼解

您好,這樣:

int add(int a, int b)

{

int s, c;

s = a ^ b;

c = a b;

while (c) {

c = 1;

a = s;

b = c;

s = a ^ b;

c = a b;

}

return s;

}

int main(int argc, char *argv[])

{

unsigned int seed;

int n;

int i;

seed = time(NULL);

srand(seed);

for (i = 0; i 100; i++) {

n = rand();

printf("%11d * 9 = %11d:%11d\n", n, add(n, n 3), n * 9);

}

return 0;

}

網(wǎng)頁標(biāo)題:神經(jīng)網(wǎng)絡(luò)算法java代碼 神經(jīng)網(wǎng)絡(luò)算法csdn
當(dāng)前鏈接:http://muchs.cn/article46/doedpeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)域名注冊、網(wǎng)站設(shè)計公司、外貿(mào)網(wǎng)站建設(shè)品牌網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)