SOFM 網路的MATLAB實現

2021-08-06 02:10:38 字數 1777 閱讀 8223

matlab 的 nn toolbox 提供了豐富的函式建立神經網路,主要包括神經網路函式、權值函式、網路的輸入函式、傳遞函式、初始化函式、效能函式、學習函式、自適應函式、以及訓練函式等

。因此熟練掌握好建立、學習、訓練網路的 nntoolbox 非常必要,下面以乙個

具體的例項說明 sofm 網路實現**的全過程。

sofm 網路的建立:

matlab 中 建 立 sofm 網 絡 的 專 用 函 數 是 newsom ( ) , 其 語 法 格 式 為newsom(p,[d1,d2,d3,…,di]),newsom( )函式返回乙個新的自組織特徵對映。其中,輸入向量矩陣 p 為 r

×2 維矩陣,r 為輸入向量的個數,並且在輸入矩陣 p 中必須指明每乙個輸入向量的最大、最小範圍;i 表示網路層的維數大小。下面結合乙個例項介紹一下建立 sofm 的過程:假設我們隨機生成 100 個二維向量,作為樣本,並對這些輸入向量分類,並繪製其分布。使用預設的函式距離來計算距離。matlab程式及結果圖如下:

%% 1、sofm網路的建立

clc;

clear;
%隨機生成 100 個二維向量,作為樣本,並繪製其分布

p = rands(2,100); %隨機生成100個點,第一行為橫座標,第二行為縱座標,每個數的範圍都是[-1,1]

plot(p(1,:),p(2,:),'+r') %在二維座標上畫出這100個點

title('初始隨機樣本點分布'); %

xlabel('p(1)');

ylabel('p(2)');

%建立網路,得到初始權值

net = newsom([0 1;1 2],[5 6]); %[0 1;1 2]這裡限定了初始權值的範圍,求取輸入向量的最大值最小值,也是為了得到初始權值

w1_init=net.iw

%繪製出初始權值分布圖

figure;

plotsom(w1_init,net.layers.distances)

%% 2、sofm網路的訓練

for i = 10:30:100%每迴圈一次,加30,共訓練4次,分別是10,40,70,100

說明:

1、圖1為二維點的分布。

2、圖2為,權值分布,其實總共有60個點,因為[5,6]代表競爭層有30個神經元,而輸入層只有2個,即每個競爭層神經元對應著2個輸入層的閾值,即二維的點,所以共有60個點都重合了。有些書對於此建立網路的方法的解讀,是求取神經元的最大值和最小值,道理是一樣的,都是為了把初始閾值設定為最大值和最小值的平均值。向量為r*2,r為輸入向量的維數。

3、圖3,為訓練10次的結果,圖4為訓練100次的結果。

Matlab實現BP神經網路

該實現為 資料探勘 課程的一次作業。資料在 上,所以資料為csv格式。但bp神經網路演算法為最一般的實現,所以有參考價值。close all 關閉開啟的檔案 clear 清除記憶體中的資料 echo on 顯示執行的每一條命令 clc 清除命令列視窗 pause 敲任意鍵開始 定義訓練樣本 p為輸入...

BP神經網路設計的matlab簡單實現

例1 採用動量梯度下降演算法訓練 bp 網路。用matlab自帶的神經網路 訓練樣本定義如下 輸入向量為 p 1 2 3 1 1 1 5 3 目標向量為 t 1 1 1 1 解 本例的 matlab 程式如下 close all clear echo on clc newff 生成乙個新的前向神經網...

線性神經網路在Matlab中實現

線性神經網路的神經元傳遞函式是線性函式,因此輸出可以是任意值,感知器的輸出只能是0或1 一 神經元結構 二 學習函式 1 newlind 設計乙個線性層 net newlind p,t 返回的net已經訓練完畢,p輸入向量,t輸出向量 2 newlin 建立未經訓練的線性層 net newlin p...