實踐副作用於理論網絡
1、概論。函數
全鏈接NN:每一個神經元與先後相鄰層的每個神經元都有鏈接關係,輸入是特徵,輸出爲預測的結果,參數的個數:∑( 前層 X 後層 + 後層 )圖片
爲防止過擬合,實際應用中會先對原始圖像進行特徵提取,在把提取到的特徵餵給全鏈接網絡,io
卷積(Convolutional):可認爲是一種有效提取圖像特徵的方法。通常會用一個正方形卷積核,遍歷圖片上的每一個點。圖片區域內,相對應的每個像素值,乘以卷積核內相對應點的權重,求和,再加上偏置。tensorflow
池化(pooling):用於減小特徵數量。最大值池化能夠提取圖片紋理,均值池化能夠保留背景特徵神經網絡
## 輸出圖片邊長=( 輸入圖片邊長 - 卷積核長+1 ) / 步長 遍歷
2、CNN模型的主要模塊方法
一、高層次抽象特徵 精減特徵點:卷積 激活 池化di
二、全鏈接co
3、tensorflow相關函數
一、計算卷積:
tf.nn.conv2d (輸入描述,eg.[ batch , 5,5( 注:5,5分辨率 ),3( 注:通道數,此處爲rgb三通道 ) ]
卷積核描述,eg.[ 3,3( 注:行列分辨率:3*3 ), 1( 注:通道數) ,16(注:核個數) ] ( 注:說明輸出深度是16,輸出通道爲16,有16個輸出 )
核滑動步長,eg.[ 1(注:固定是1) , 1( 注:行步長), 1( 注:列步長) ,1(注:固定是1,偏置???) ]
padding='VALID' ( 注:valid表示不用全零填充,不然爲same )
)
二、計算池化:
最大池化爲tf.nn.max_pool,平均池化: tf.nn.avg_pool
pool=tf.nn.max_pool( 輸入描述,eg.[ batch , 28,28 (注:行列分辨率 28*28 ) ,6(通道數) ]
池化描述(僅大小),eg.[ 1(注:固定是1) , 2,2(注:行列分辨率 2*2), 1(注:固定是1) ]
池化核滑動步長,eg.[1(注:固定是1) , 2( 注:行步長), 2( 注:列步長) ,1(注:固定是1) ]
padding = ' SAME '
)
三、捨棄(Dropout):
在神經網絡的訓練過程當中,將一部分神經元按照必定機率從神經網絡中暫時捨棄。使用時被捨棄的神經元恢復鏈接。用於防止過擬合。
tf.nn.dropout( 上層輸出,暫時捨棄的機率 )