1.python列表list怨规,轉(zhuǎn)換成numpy數(shù)組array
import numpy as np ? ? ?#加入numpy模塊
假設(shè)A是一個列表其弊,則使用 np.array(A) ? 將列表轉(zhuǎn)換成數(shù)組
2.改變numpy數(shù)組的維度
numpy模塊中包含newaxis可以給原始數(shù)組曾加一個維度,np.newaxis放的位置不同扑庞,產(chǎn)生的新數(shù)組也不同淡溯。
假設(shè)X是(20,50)的二維數(shù)組读整,現(xiàn)在想把它變成(1,20,50,1)的四維數(shù)組,則使用X1=X[np.newaxis,:,:,np.newaxis]
通過print(X.shape) ? print(X1.shape)可以查看
3.改變一個數(shù)組的形狀用reshape
4.改變numpy數(shù)據(jù)類型
假設(shè)a是一個numpy數(shù)組咱娶,查看數(shù)據(jù)類型:a.dtype ? 使用dtype=np.float32來改變數(shù)據(jù)類型
CNN主要用來識別位移米间、縮放及其他形式扭曲不變性的二維圖形。
在圖像處理中膘侮,往往把圖像表示為像素的向量屈糊,比如一個1000×1000的圖像,可以表示為一個1000000的向量喻喳。在上一節(jié)中提到的神經(jīng)網(wǎng)絡(luò)中另玖,如果隱含層數(shù)目與輸入層一樣,即也是1000000時表伦,那么輸入層到隱含層的參數(shù)數(shù)據(jù)為1000000×1000000=10^12谦去,這樣就太多了,基本沒法訓(xùn)練蹦哼。所以圖像處理要想練成神經(jīng)網(wǎng)絡(luò)大法鳄哭,必先減少參數(shù)加快速度。
卷積神經(jīng)網(wǎng)絡(luò)有兩種神器可以降低參數(shù)數(shù)目纲熏,第一種神器叫做局部感知野妆丘。一般認為人對外界的認知是從局部到全局的,而圖像的空間聯(lián)系也是局部的像素聯(lián)系較為緊密局劲,而距離較遠的像素相關(guān)性則較弱勺拣。因而,每個神經(jīng)元其實沒有必要對全局圖像進行感知鱼填,只需要對局部進行感知药有,然后在更高層將局部的信息綜合起來就得到了全局的信息。網(wǎng)絡(luò)部分連通的思想苹丸,也是受啟發(fā)于生物學(xué)里面的視覺系統(tǒng)結(jié)構(gòu)愤惰。視覺皮層的神經(jīng)元就是局部接受信息的。局部感知野:假如每個神經(jīng)元只和10×10個像素值相連赘理,那么權(quán)值數(shù)據(jù)為1000000×100個參數(shù)宦言,減少為原來的千分之一。而那10×10個像素值對應(yīng)的10×10個參數(shù)商模,其實就相當(dāng)于卷積操作奠旺。
第二級神器蜘澜,即權(quán)值共享。在上面的局部連接中响疚,每個神經(jīng)元都對應(yīng)100個參數(shù)兼都,一共1000000個神經(jīng)元,如果這1000000個神經(jīng)元的100個參數(shù)都是相等的稽寒,那么參數(shù)數(shù)目就變?yōu)?00了。
怎么理解權(quán)值共享呢趟章?我們可以這100個參數(shù)(也就是卷積操作)看成是提取特征的方式杏糙,該方式與位置無關(guān)。這其中隱含的原理則是:圖像的一部分的統(tǒng)計特性與其他部分是一樣的蚓土。這也意味著我們在這一部分學(xué)習(xí)的特征也能用在另一部分上宏侍,所以對于這個圖像上的所有位置,我們都能使用同樣的學(xué)習(xí)特征蜀漆。
更直觀一些谅河,當(dāng)從一個大尺寸圖像中隨機選取一小塊,比如說 8×8 作為樣本确丢,并且從這個小塊樣本中學(xué)習(xí)到了一些特征绷耍,這時我們可以把從這個 8×8 樣本中學(xué)習(xí)到的特征作為探測器,應(yīng)用到這個圖像的任意地方中去鲜侥。特別是褂始,我們可以用從 8×8 樣本中所學(xué)習(xí)到的特征跟原本的大尺寸圖像作卷積,從而對這個大尺寸圖像上的任一位置獲得一個不同特征的激活值描函。