cnn中減少引數的2兩個規則:
1、區域性感知。生物學中,視覺皮層的神經元是區域性感知資訊的,只響應某些特定區域的刺激;影象的空間聯絡中,區域性的畫素聯絡較為緊密,距離較遠的畫素相關性較弱。
這個對應於演算法中卷積核的大小,mnist手寫識別在28*28的畫素中取patch為5*5。
上圖中:左邊是全連線,右邊是區域性連線。
2、權值共享。每個神經元對應的引數(權值)都相等。隱含的原理是:影象的一部分的統計特性與其他部分是一樣的。那麼在這一部分學習的特徵也能用在另一部分上,所以對於這個影象上的所有位置,都能使用同樣的學習特徵。
注:卷積可參考數字影象處理中的濾波處理,濾波就是對於大矩陣中的每個畫素, 計算它周圍畫素和濾波器(卷積核)矩陣對應位置元素的乘積, 然後把結果相加到一起, 最終得到的值就作為該畫素的新值, 這樣就完成了一次濾波。該過程也叫卷積,區別在於,影象卷積計算,需要先翻轉卷積核
, 也就是繞卷積核
中心旋轉180
度。
以下**
慣例先展示函式:
tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=none, name=none)
除去name引數用以指定該操作的name,與方法有關的一共五個引數:
結果返回乙個tensor,這個輸出,就是我們常說的feature map。
2)tf最大值池化函式
引數是四個,和卷積很類似:
第乙個引數value:需要池化的輸入,一般池化層接在卷積層後面,所以輸入通常是feature map,依然是[batch, height, width, channels]這樣的shape
第二個引數ksize:池化視窗的大小,取乙個四維向量,一般是[1, height, width, 1],因為我們不想在batch和channels
上做池化,所以這兩個維度設為了1
第三個引數strides:和卷積類似,視窗在每乙個維度上滑動的步長,一般也是[1, stride,stride
, 1]
第四個引數padding:和卷積類似,可以取'valid' 或者'same'
返回乙個tensor,型別不變,shape仍然是[batch, height, width, channels]
這種形式。
總結:卷積或池化後特徵圖譜的大小主要取決於滑動步長(strides)和padding(邊距處理方式)。strides=1,padding=『same』,則輸入與輸出大小相同;strides=2或padding=『valid』都會使輸出影象變小。
其他:
輸出影象的尺寸
輸出影象的空間尺寸可以計算為([w-f + 2p] / s)+1。在這裡,w 是輸入尺寸,f 是過濾器的尺寸,p 是填充數量,s 是步幅數字。假如我們有一張 28*28*3 的輸入影象(彩色3通道),我們使用 32 個尺寸為 5*5*3 的過濾器,單步幅和用零填充(『same』)。
那麼 w=28,f=5,p=4,s=1。輸出深度等於應用的濾波器的數量,即 32,輸出尺寸大小為 ([28-5+4]/1)+1 = 28。因此輸出尺寸是 28*28*10。
而池化的時候一般步長會是2,這樣,影象會被縮小。
另,卷積層和池化層,是用來提取特徵(初識卷積層提取一般特徵(邊緣檢測或線條),後面的卷積層用來提取複雜一些的特徵),並減少原始影象的引數。全連線層用來輸出分類,softmax用來將分類結果轉化為與真實分類同樣的形式(one-hot形式),之後可進行代價函式(交叉熵)計算,更新權值和偏置項。
卷積->啟用->池化
卷積神經網路 有趣的卷積神經網路
一 前言 最近一直在研究深度學習,聯想起之前所學,感嘆數學是一門樸素而神奇的科學。f g m1 m2 r 萬有引力描述了宇宙星河運轉的規律,e mc 描述了恆星發光的奧秘,v h d哈勃定律描述了宇宙膨脹的奧秘,自然界的大部分現象和規律都可以用數學函式來描述,也就是可以求得乙個函式。神經網路 簡單又...
通俗理解卷積神經網路
2012年我在北京組織過8期machine learning讀書會,那時 機器學習 非常火,很多人都對其抱有巨大的熱情。當我2013年再次來到北京時,有乙個詞似乎比 機器學習 更火,那就是 深度學習 有何問題,歡迎不吝指正。神經網路由大量的神經元相互連線而成。每個神經元接受線性組合的輸入後,最開始只...
神經網路 卷積神經網路
這篇卷積神經網路是前面介紹的多層神經網路的進一步深入,它將深度學習的思想引入到了神經網路當中,通過卷積運算來由淺入深的提取影象的不同層次的特徵,而利用神經網路的訓練過程讓整個網路自動調節卷積核的引數,從而無監督的產生了最適合的分類特徵。這個概括可能有點抽象,我盡量在下面描述細緻一些,但如果要更深入了...