問題:如何在matlab中用簡單點的方法實現(xiàn)矩陣歸一化,并落在0-1之間?
歸一化方法很多,一個比較簡單的(X-min(X(:)))/(max(X(:))-min(X(:)))
關于神經(jīng)網(wǎng)絡(matlab)歸一化的整理由于采集的各數(shù)據(jù)單位不一致,因而須對數(shù)據(jù)進行[-1,1]歸一化處理,歸一化方法主要有如下幾種,供大家參考:(by james)1、線性函數(shù)轉換,表達式如下:y=(x-MinValue)/(MaxValue-MinValue)說明:x、y分別為轉換前、后的值,MaxValue、MinValue分別為樣本的最大值和最小值。2、對數(shù)函數(shù)轉換,表達式如下:y=log10(x)說明:以10為底的對數(shù)函數(shù)轉換。3、反余切函數(shù)轉換,表達式如下:y=atan(x)*2/PI
歸一化是為了加快訓練網(wǎng)絡的收斂性,可以不進行歸一化處理 歸一化的具體作用是歸納統(tǒng)一樣本的統(tǒng)計分布性。歸一化在0-1之間是統(tǒng)計的概率分布,歸一化在-1--+1之間是統(tǒng)計的坐標分布。歸一化有同一、統(tǒng)一和合一的意思。無論是為了建模還是為了計算,首先基本度量單位要統(tǒng)一,神經(jīng)網(wǎng)絡是以樣本在事件中的統(tǒng)計分別幾率來進行訓練(概率計算)和預測的,歸一化是同一在0-1之間的統(tǒng)計概率分布; 當所有樣本的輸入信號都為正值時,與第一隱含層神經(jīng)元相連的權值只能同時增加或減小,從而導致學習速度很慢。為了避免出現(xiàn)這種情況,加快網(wǎng)絡學習速度,可以對輸入信號進行歸一化,使得所有樣本的輸入信號其均值接近于0或與其均方差相比很小。
歸一化是因為sigmoid函數(shù)的取值是0到1之間的,網(wǎng)絡最后一個節(jié)點的輸出也是如此,所以經(jīng)常要對樣本的輸出歸一化處理。所以這樣做分類的問題時用[0.9 0.1 0.1]就要比用[1 0 0]要好。但是歸一化處理并不總是合適的,根據(jù)輸出值的分布情況,標準化等其它統(tǒng)計變換方法有時可能更好。
關于用PRemnmx語句進行歸一化:premnmx語句的語法格式是:[Pn,minp,maxp,Tn,mint,maxt]=premnmx(P,T)其中P,T分別為原始輸入和輸出數(shù)據(jù),minp和maxp分別為P中的最小值和最大值。mint和maxt分別為T的最小值和最大值。premnmx函數(shù)用于將網(wǎng)絡的輸入數(shù)據(jù)或輸出數(shù)據(jù)進行歸一化,歸一化后的數(shù)據(jù)將分布在[-1,1]區(qū)間內。我們在訓練網(wǎng)絡時如果所用的是經(jīng)過歸一化的樣本數(shù)據(jù),那么以后使用網(wǎng)絡時所用的新數(shù)據(jù)也應該和樣本數(shù)據(jù)接受相同的預處理,這就要用到tramnmx。下面介紹tramnmx函數(shù):[Pn]=tramnmx(P,minp,maxp)其中P和Pn分別為變換前、后的輸入數(shù)據(jù),maxp和minp分別為premnmx函數(shù)找到的最大值和最小值。(by terry2008)matlab中的歸一化處理有三種方法1. premnmx、postmnmx、tramnmx2. restd、poststd、trastd3. 自己編程具體用那種方法就和你的具體問題有關了 (by happy)pm=max(abs(p(i,:))); p(i,:)=p(i,:)/pm;和for i=1:27p(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:)));end 可以歸一到0 1 之間0.1+(x-min)/(max-min)*(0.9-0.1)其中max和min分別表示樣本最大值和最小值。這個可以歸一到0.1-0.9
新聞熱點
疑難解答