卷積神經(jīng)網(wǎng)絡(luò)CNN原理展示和Tensorflow相關(guān)函數(shù)介紹

卷積神經(jīng)網(wǎng)絡(luò)

1 CNN卷積層

卷積層1
卷積層2

卷積操作

卷積核Kernal與Input矩陣執(zhí)行卷積操作,每次卷積的值組成了一個新的矩陣。卷積的操作是Kernal的值和每個對應(yīng)的Input中的值進行乘積求和。

卷積步長

卷積步長指的是Kernal在Input中每次移動的距離是多少,該動態(tài)圖中顯示的是每次移動一步。

Padding

通過填充0使得卷積后的結(jié)果大小仍然和原來的矩陣大小一致。

2 CNN池化層

池化

池化層就是對原有的矩陣數(shù)據(jù)進行壓縮的操作,假如是2x2的池化,那么就將子矩陣的每2x2個元素變成一個元素,如果是3x3的池化,那么就將子矩陣的每3x3個元素變成一個元素,這樣輸入矩陣的維度就變小了。如圖所示是最大池化的操作,將2*2的矩陣中最大的元素作為新矩陣的元素,實現(xiàn)矩陣的維度降低。

損失函數(shù)

個人理解神經(jīng)網(wǎng)絡(luò)是通過非線性的映射將輸入空間映射到輸出空間。輸出結(jié)果的好壞使用損失函數(shù)進行評定,損失函數(shù)衡量的是預(yù)測的結(jié)果和實際的結(jié)果之間的差距,通過利用差距使用優(yōu)化算法更新神經(jīng)網(wǎng)絡(luò)中的權(quán)重進而實現(xiàn)降低損失函數(shù)的作用。

tensorflow函數(shù)參數(shù)詳解

tf.nn.conv2d (input, filter, strides, padding, use_cudnn_on_gpu=None, data_format=None, name=None)
  • input : 輸入的要做卷積的圖片,要求為一個張量,shape為 [ batch, in_height, in_weight, in_channel ],其中batch為圖片的數(shù)量,in_height 為圖片高度,in_weight 為圖片寬度,in_channel 為圖片的通道數(shù),灰度圖該值為1,彩色圖為3。

  • filter: 卷積核,要求也是一個張量,shape為 [ filter_height, filter_weight, in_channel, out_channels ],其中 filter_height 為卷積核高度,filter_weight 為卷積核寬度,in_channel 是圖像通道數(shù) ,和 input 的 in_channel 要保持一致,out_channel 是卷積核數(shù)量。

  • strides: 卷積時在圖像每一維的步長,這是一個一維的向量,[ 1, strides, strides, 1],第一位和最后一位固定必須是1

  • padding: string類型,值為“SAME” 和 “VALID”,表示的是卷積的形式,是否考慮邊界。"SAME"是考慮邊界,不足的時候用0去填充周圍,"VALID"則不考慮

  • use_cudnn_on_gpu: bool類型,是否使用cudnn加速,默認為true

tf.nn.max_pool(value, ksize, strides, padding, name=None)

參數(shù)是四個,和卷積很類似:

  • value:需要池化的輸入,一般池化層接在卷積層后面,所以輸入通常是feature map,依然是[batch, height, width, channels]這樣的shape

  • ksize:池化窗口的大小,取一個四維向量,一般是[1, height, width, 1],因為我們不想在batch和channels上做池化,所以這兩個維度設(shè)為了1

  • strides:和卷積類似,窗口在每一個維度上滑動的步長,一般也是[1, stride,stride, 1]

  • padding:和卷積類似,可以取'VALID' 或者'SAME'

返回一個Tensor,類型不變,shape仍然是[batch, height, width, channels]這種形式

總結(jié):f(WX+b) = y CNN卷積神經(jīng)網(wǎng)絡(luò)可以認為是一種映射關(guān)系,將輸入的數(shù)據(jù)X通過映射函數(shù)f獲取結(jié)果y,W是映射的過程中使用的權(quán)重,在CNN網(wǎng)絡(luò)中相當于Kernal和網(wǎng)絡(luò)層之間連接的權(quán)重值。預(yù)測的y值與實際的y值之間有偏差,使用損失函數(shù)衡量這些偏差,為減小損失函數(shù)提高精確度,使用優(yōu)化算法去調(diào)整網(wǎng)絡(luò)中的權(quán)重W來降低損失函數(shù)。

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

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