導航:首頁 > 網路設置 > 神經網路神經元數量一般取多少

神經網路神經元數量一般取多少

發布時間:2022-03-07 19:42:02

Ⅰ BP神經網路神經元個數求助

你用的是newff函數的新版用法,不需要手動設置輸入、輸出神經元數目,只需要設置隱層神經元即可。從你的HideLayerNode=[17 7];可以看出,你這是雙隱層網路,第一個隱層是17個神經元,第二層隱是7神經元。
net = newff(P,T,[S1 S2...S(N-l)],{TF1 TF2...TFNl}, BTF,BLF,PF,IPF,OPF,DDF)
Size of ith layer, for N-1 layers, default = [ ].
(Output layer size SN is determined from T.)
輸出層神經元數量由樣本維數決定。

Ⅱ 神經網路輸出神經元個數如何確定

輸出神經元個數是按你的需要確定的,比如你需要模擬函數y=1/x,那麼你的輸入向量就是x,輸出就是y=1/x,也就是一個輸出。再比如你需要模擬水體中的cod,bod參數值,那麼你的輸出就是兩個。你的情況,比如說,你做符號識別的目的是將符號區分為正常符號和異常符號,那麼你的輸出就是2個,是由實際需要來的。

Ⅲ 神經網路模型需要多少條數據

輸入指標是什麼意思。輸入維數嗎?數據一是這些數據有意義是一類的,或者說是有內部規律。數量上多一點好一點。訓練樣本個預測樣本2比1左右就好。學習過程要注意的是你的學習速率,這影響最優解的尋找。

Ⅳ BP神經網路的訓練集需要大樣本嗎一般樣本個數為多少

BP神經網路的訓練集需要大樣本嗎?一般樣本個數為多少?
BP神經網路樣本數有什麼影響
學習神經網路這段時間,有一個疑問,BP神經網路中訓練的次數指的網路的迭代次數,如果有a個樣本,每個樣本訓練次數n,則網路一共迭代an次,在n>>a 情況下 , 網路在不停的調整權值,減小誤差,跟樣本數似乎關系不大。而且,a大了的話訓練時間必然會變長。
換一種說法,將你的數據集看成一個固定值, 那麼樣本集與測試集 也可以按照某種規格確定下來如7:3 所以如何看待 樣本集的多少與訓練結果呢? 或者說怎麼使你的網路更加穩定,更加符合你的所需 。

我嘗試從之前的一個例子中看下區別

如何用70行Java代碼實現深度神經網路演算法

作者其實是實現了一個BP神經網路 ,不多說,看最後的例子

一個運用神經網路的例子
最後我們找個簡單例子來看看神經網路神奇的效果。為了方便觀察數據分布,我們選用一個二維坐標的數據,下面共有4個數據,方塊代表數據的類型為1,三角代表數據的類型為0,可以看到屬於方塊類型的數據有(1,2)和(2,1),屬於三角類型的數據有(1,1),(2,2),現在問題是需要在平面上將4個數據分成1和0兩類,並以此來預測新的數據的類型。


圖片描述

我們可以運用邏輯回歸演算法來解決上面的分類問題,但是邏輯回歸得到一個線性的直線做為分界線,可以看到上面的紅線無論怎麼擺放,總是有一個樣本被錯誤地劃分到不同類型中,所以對於上面的數據,僅僅一條直線不能很正確地劃分他們的分類,如果我們運用神經網路演算法,可以得到下圖的分類效果,相當於多條直線求並集來劃分空間,這樣准確性更高。

圖片描述

簡單粗暴,用作者的代碼運行後 訓練5000次 。根據訓練結果來預測一條新數據的分類(3,1)



預測值 (3,1)的結果跟(1,2)(2,1)屬於一類 屬於正方形

這時如果我們去掉 2個樣本,則樣本輸入變成如下

//設置樣本數據,對應上面的4個二維坐標數據
double[][] data = new double[][]{{1,2},{2,2}};
//設置目標數據,對應4個坐標數據的分類
double[][] target = new double[][]{{1,0},{0,1}};
1
2
3
4
1
2
3
4




則(3,1)結果變成了三角形,

如果你選前兩個點 你會發現直接一條中間線就可以區分 這時候的你的結果跟之前4個點時有區別 so 你得增加樣本 直到這些樣本按照你所想要的方式分類 ,所以樣本的多少 重要性體現在,樣本得能反映所有的特徵值(也就是輸入值) ,樣本多少或者特徵(本例子指點的位置特徵)決定的你的網路的訓練結果,!!!這是 我們反推出來的結果 。這里距離深度學習好像近了一步。

另外,這個70行代碼的神經網路沒有保存你訓練的網路 ,所以你每次運行都是重新訓練的網路。其實,在你訓練過後 權值已經確定了下來,我們確定網路也就是根據權值,so只要把訓練後的權值保存下來,將需要分類的數據按照這種權值帶入網路,即可得到輸出值,也就是一旦網路確定, 權值也就確定,一個輸入對應一個固定的輸出,不會再次改變!個人見解。

最後附上作者的源碼,作者的文章見開頭鏈接
下面的實現程序BpDeep.java可以直接拿去使用,

import java.util.Random;
public class BpDeep{
public double[][] layer;//神經網路各層節點
public double[][] layerErr;//神經網路各節點誤差
public double[][][] layer_weight;//各層節點權重
public double[][][] layer_weight_delta;//各層節點權重動量
public double mobp;//動量系數
public double rate;//學習系數

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;l<layernum.length;l++){
layer[l]=new double[layernum[l]];
layerErr[l]=new double[layernum[l]];
if(l+1<layernum.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;j<layernum[l]+1;j++)
for(int i=0;i<layernum[l+1];i++)
layer_weight[l][j][i]=random.nextDouble();//隨機初始化權重
}
}
}
//逐層向前計算輸出
public double[] computeOut(double[] in){
for(int l=1;l<layer.length;l++){
for(int j=0;j<layer[l].length;j++){
double z=layer_weight[l-1][layer[l-1].length][j];
for(int i=0;i<layer[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];
}
//逐層反向計算誤差並修改權重
public void updateWeight(double[] tar){
int l=layer.length-1;
for(int j=0;j<layerErr[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;j<layerErr[l].length;j++){
double z = 0.0;
for(int i=0;i<layerErr[l+1].length;i++){
z=z+l>0?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];//隱含層動量調整
layer_weight[l][j][i]+=layer_weight_delta[l][j][i];//隱含層權重調整
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];//截距動量調整
layer_weight[l][j+1][i]+=layer_weight_delta[l][j+1][i];//截距權重調整
}
}
layerErr[l][j]=z*layer[l][j]*(1-layer[l][j]);//記錄誤差
}
}
}

public void train(double[] in, double[] tar){
double[] out = computeOut(in);
updateWeight(tar);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
下面是這個測試程序BpDeepTest.java的源碼:

import java.util.Arrays;
public class BpDeepTest{
public static void main(String[] args){
//初始化神經網路的基本配置
//第一個參數是一個整型數組,表示神經網路的層數和每層節點數,比如{3,10,10,10,10,2}表示輸入層是3個節點,輸出層是2個節點,中間有4層隱含層,每層10個節點
//第二個參數是學習步長,第三個參數是動量系數
BpDeep bp = new BpDeep(new int[]{2,10,2}, 0.15, 0.8);

//設置樣本數據,對應上面的4個二維坐標數據
double[][] data = new double[][]{{1,2},{2,2},{1,1},{2,1}};
//設置目標數據,對應4個坐標數據的分類
double[][] target = new double[][]{{1,0},{0,1},{0,1},{1,0}};

//迭代訓練5000次
for(int n=0;n<5000;n++)
for(int i=0;i<data.length;i++)
bp.train(data[i], target[i]);

//根據訓練結果來檢驗樣本數據
for(int j=0;j<data.length;j++){
double[] result = bp.computeOut(data[j]);
System.out.println(Arrays.toString(data[j])+":"+Arrays.toString(result));
}

//根據訓練結果來預測一條新數據的分類
double[] x = new double[]{3,1};
double[] result = bp.computeOut(x);
System.out.println(Arrays.toString(x)+":"+Arrays.toString(result));
}
}

Ⅳ 請問如何確定神經網路控制中網路層數和每層神經元個數

你使用的什麼神經網路?如果是RBF神經網路,那麼只有3層,輸入層,隱含層和輸出層。確定神經元個數的方法有K-means,ROLS等演算法。

Ⅵ bp神經網路的訓練樣本數量確定多少比較和是

我認為是可以循環的,要注意過優化

Ⅶ 神經網路輸出神經元個數怎麼確定

如果是RBF神經網路,那麼只有3層,輸入層,隱含層和輸出層。確定神經元個數的方法有K-means,ROLS等演算法。現在還沒有什麼成熟的定理能確定各層神經元的神經元個數和含有幾層網路,大多數還是靠經驗,不過3層網路可以逼近任意一個非線性網路,神經元個數越多逼近的效果越好。

神經網路可以指向兩種,一個是生物神經網路,一個是人工神經網路。
生物神經網路:一般指生物的大腦神經元,細胞,觸點等組成的網路,用於產生生物的意識,幫助生物進行思考和行動。
人工神經網路(Artificial Neural Networks,簡寫為ANNs)也簡稱為神經網路(NNs)或稱作連接模型(Connection Model),它是一種模仿動物神經網路行為特徵,進行分布式並行信息處理的演算法數學模型。這種網路依靠系統的復雜程度,通過調整內部大量節點之間相互連接的關系,從而達到處理信息的目的。
人工神經網路:是一種應用類似於大腦神經突觸聯接的結構進行信息處理的數學模型。在工程與學術界也常直接簡稱為「神經網路」或類神經網路。

Ⅷ som神經網路中競爭層神經元數目怎麼確定

輸出層神經元數量設定和訓練集樣本的類別數相關,但是實際中我們往往不能清除地知道有多少類。如果神經元節點數少於類別數,則不足以區分全部模式,訓練的結果勢必將相近的模式類合並為一類;相反,如果神經元節點數多於類別數,則有可能分的過細,或者是出現「死節點」,即在訓練過程中,某個節點從未獲勝過且遠離其他獲勝節點,因此它們的權值從未得到過更新。
不過一般來說,如果對類別數沒有確定知識,寧可先設定較多的節點數,以便較好的映射樣本的拓撲結構,如果分類過細再酌情減少輸出節點。「死節點」問題一般可通過重新初始化權值得到解決。

Ⅸ matlab中神經網路如何設置神經元的個數我想要設置5個神經元!

net=newff([x,y],[a1,a2,...,ak],{f1,f2,...,fk})
x,y分別為列向量,存儲各個樣本書ude最小值和最大值。[a1,a2,...,ak]是行向量,輸入神經網路各層的結點數,也就是你題目的問題。k是指神經元隱層層數。{f1,f2,...,fk}輸入變數為單元式數組,對應每層神經元的傳輸函數類型。
如果還有什麼問題再聯系我吧~

閱讀全文

與神經網路神經元數量一般取多少相關的資料

熱點內容
網路語言22k是多少錢 瀏覽:347
手機上最好玩的不需要網路的游戲 瀏覽:511
無線網路連接顯示受限 瀏覽:40
怎麼看網路在不在一個網段 瀏覽:517
攝像頭怎麼設置24g網路 瀏覽:897
網路直播帶貨哪個平台好 瀏覽:69
進行網路學習的原因有哪些 瀏覽:117
手機上4g網路的標記 瀏覽:349
網路共享啟用網路失敗 瀏覽:877
網路延遲請使用密碼開門 瀏覽:926
wifi網路電話l 瀏覽:784
手機卡網路差也連不了網怎麼回事 瀏覽:455
開啟無線連接後網路不能用 瀏覽:59
為什麼電視信號比網路信號清晰 瀏覽:878
網路和現實的邊界在哪裡 瀏覽:252
魅族手機鏈接不上網路 瀏覽:636
下列哪個是所有直接參與網路通信 瀏覽:256
pr軟體安裝需要網路么 瀏覽:479
學校網路歸哪個部門管 瀏覽:299
瑞風s3導航網路連接失敗 瀏覽:439

友情鏈接