深度學(xué)習(xí)之卷積

今日休假,把卷積神經(jīng)網(wǎng)絡(luò)梳理下。先從一些基本概念入手,什么是卷積?為什么叫這么個(gè)名字?
搜索了一遍,網(wǎng)上有很多人已經(jīng)表述的非常好了,這里用自己理解的語言重述下。

既然是卷積,肯定是一種積,積我們知道是兩個(gè)數(shù)的乘的結(jié)果,那么卷積也是一種乘,所以需要兩個(gè)相乘的單元。

先考慮在一維變量上:


image

函數(shù) f 與函數(shù) g 不停在搏斗,同時(shí)把搏斗的結(jié)果進(jìn)行求和,而且這個(gè)過程是從生到死(負(fù)無窮-正無窮)
下面是連續(xù)函數(shù)的積分表達(dá)形式,效果是一樣的


image

上面的兩個(gè)式子可以看到有共同的地方就是:
image

這就有意思了,也就是解釋卷積的“卷”的關(guān)鍵所在。

我們假設(shè)
image

x+y=a 是一條直線,a 的取值從負(fù)無窮到正無窮,這個(gè)過程就是把 xy 坐標(biāo)系從西南角一直掃描到東北角,就像我們卷手絹一樣,還是比較形象的。
image

有了上面的認(rèn)識(shí),我們進(jìn)一步看看二維的。
如果在在二維空間,有函數(shù) f(x, y) 和 g(x, y),他們兩個(gè)做乘積,也就是:


image

這個(gè)式子看上去有點(diǎn)小復(fù)雜,其實(shí)就是表示從負(fù)無窮到正無窮的全部 s 和 t 值,把 g 在 (x-s, y-t) 上的值乘以 f 在 (s, t) 上的值之后再“加和”到一起,得到 c 在 (x, y) 上的值。說白了卷積就是一種“加權(quán)求和”:以 f 為權(quán),以 (x, y) 為中心,把 g 距離中心 (-s, -t) 位置上的值乘上 f 在 (s, t) 的值,最后加到一起。
如果是離散的,把積分修改為求和即可:


image

式子最右邊就是表示跨度德爾塔為1。

尤其需要注意的是 f 與 g 里面的 s 與 t 的正負(fù)方向。

舉個(gè)例子:
假如現(xiàn)在有一個(gè)10*10的圖片,該圖片是灰度處理過的,也就是黑白圖片,不是 RGB 三個(gè)通道的。
在這10
10的格子里有對(duì)應(yīng)的值,范圍之外全是0,我們令整個(gè)圖片叫 G。另外還有一個(gè)矩陣(一般應(yīng)該是特征矩陣,用來提取大圖的特征),我們叫他F,他的值應(yīng)該是預(yù)先給定好的,這里我們也是假設(shè)一組數(shù)據(jù)填充進(jìn)來。

image

接下來,我們要做的就是,把 F 進(jìn)行上下左右反轉(zhuǎn),形成 F‘,然后與 G 從00點(diǎn)開始對(duì)齊,進(jìn)行小格子乘積操作,再求和。
比如在3**7這個(gè)點(diǎn)進(jìn)行,求新得到的該點(diǎn)數(shù)值。

image

image

上述操作其實(shí)就是對(duì)數(shù)字圖像進(jìn)行離散卷積操作,又叫濾波。F 稱作卷積核或?yàn)V波器。不同的 F 有不同的效果。
比如:


image

經(jīng)過不同的卷積核,可能得到的圖片:


image

image

進(jìn)一步

有了卷積,我們可能還要做一些輔助的事,比如步長(zhǎng),補(bǔ)0等。
比如有一個(gè)5乘5的矩陣,都是1,現(xiàn)在有一個(gè)2**2卷積核,值是[-1,0,0,-1]。


image

現(xiàn)在需要做卷積,每次移動(dòng)2格,也就是步長(zhǎng)是2,開始計(jì)算各個(gè)小區(qū)塊,如下圖。


image

最終結(jié)果是:
-2,-2,-1,
-2,-2,-1,
-1,-1,-1

在移動(dòng)步長(zhǎng)的時(shí)候,不足的地方需要補(bǔ)0操作,如果不補(bǔ)0,就 dropped,這都是 padding 的策略

多核卷積

一個(gè) G 函數(shù),可以使用多個(gè) F 函數(shù)做卷積核,得到不同的卷積結(jié)果,也就是某張圖片使用多個(gè)卷積核,得到各個(gè)不同地方的特征。

全卷積

全卷積也叫反卷積,他的步長(zhǎng)是1,是把原始圖片的每個(gè)像素點(diǎn)用卷積操作展開。比如下圖,


image

如果原始圖片的大小是 N1乘N1,核的大小是 N2乘N2,那么生成的圖片大小是:(N1+N2-1)(N1+N2-1)

池化

池化的操作就是降低維度,我們?cè)賹?duì)圖片做操作的時(shí)候,由于維度太多,需要降低維度,同時(shí)要保持特征部分。池化的操作也是需要一個(gè)矩陣,也需要步長(zhǎng),原始數(shù)據(jù)經(jīng)過池化操作,矩陣大小明顯變小,里面的數(shù)值的確定有:取池化范圍的最大值,取池化區(qū)域均值,下圖是一個(gè)最大池化的例子


image

在 TensorFlow 中學(xué)習(xí)卷積

在 TensorFlow 里面已經(jīng)包裝了這些函數(shù),我們不在需要逐個(gè)計(jì)算,tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, data_format=None, name=None) 函數(shù)實(shí)現(xiàn)了卷積操作。來看下他的具體參數(shù)含義:
給定一個(gè)input的張量[batch, in_height, in_width, in_channels]和一個(gè)過濾器 / 內(nèi)核張量 [filter_height, filter_width, in_channels, out_channels]后,執(zhí)行以下操作:

  • 展平filter為一個(gè)形狀為[filter_height * filter_width * in_channels, output_channels]的二維矩陣。
  • 從input中按照filter大小提取圖片子集形成一個(gè)大小為[batch, out_height, out_width, filter_height * filter_width * in_channels]的虛擬張量。
  • 循環(huán)每個(gè)圖片子集,右乘filter矩陣。

舉個(gè)例子:
有一個(gè)輸入[1,3,3,1],表示一個(gè)圖像,33大小,1個(gè)通道;
filter 是[2,2,1,1]表示過濾器是2
2大小,輸入輸出通道都是1;
步長(zhǎng)是1,padding是VALID;
這種情況下,輸出是1x2x2x1,其中2=(3-2)/1+1,即(圖片大小-filter大小)/步長(zhǎng)+1。

input 和 filter 都是4維度

import tensorflow as tf

input = tf.constant([[
  [[1],
   [2],
   [ 3]],
  [[4],
   [5],
   [6 ]],
  [[ 7],
   [8],
   [9]]]],dtype=tf.float32)
filter = tf.constant([[[[1]],
  [[2]]],
 [[[ 3]],
  [[4]]]],dtype=tf.float32)

op = tf.nn.conv2d(input,filter,strides = [1,1,1,1],padding ='VALID')
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    result = sess.run(op)
    print(result)

輸出結(jié)果是:

[[[[37.]
   [47.]]

  [[67.]
   [77.]]]]

如果 padding(補(bǔ)0操作)是 SAME,也就是和輸入一樣大小,那么

op = tf.nn.conv2d(input,filter,strides = [1,1,1,1],padding ='SAME')

得到的結(jié)果1x3x3x1。

[[[[37.]
   [47.]
   [21.]]

  [[67.]
   [77.]
   [33.]]

  [[23.]
   [26.]
   [ 9.]]]]
image

對(duì)于多通道來說,輸入是[1x3x3x2]是3x3圖像有2個(gè)通道,過濾器是[2x2x2x1]是2x2大小2個(gè)輸入1個(gè)輸出,步長(zhǎng)是1,padding=VALID,輸出是[1x2x2x1],如圖:


image
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容