日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Convolution Layer:卷积层

發布時間:2024/8/26 综合教程 34 生活家
生活随笔 收集整理的這篇文章主要介紹了 Convolution Layer:卷积层 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 卷積層(Convolution Layer):由若干個卷積核f(filter)和偏移值b組成,(這里的卷積核相當于權值矩陣),卷積核與輸入圖片進行點積和累加可以得到一張feature map。

卷積層的特征:

(1)網絡局部連接:卷積核每一次僅作用于圖片的局部

(2)卷積核權值共享:一個卷積層可以有多個不同的卷積核,每一個filter在與輸入矩陣進行點積操作的過程中,其權值是固定不變的。

2. 卷積核(filter):用于提取圖片的局部特征,不同的卷積核提取圖片特征的效果不同。

感受野:卷積核的大小 / 范圍,卷積核所能感知的區域

一個卷積層可以有若干個卷積核,卷積核的通道數=輸入圖片的通道數,每一個卷積核的通道與圖片的對應通道進行點積+累加的操作,可以得到1個featrue map,假設有3個通道,那么可以得到3個featrue map,然后把這3個feature map對應的位置相加,即可得到1張featrue map,得到的這一張就是該卷積核與圖片進行卷積操作的feature map。一般圖片有3個通道,red、green、bule,然后卷積核的通道數為3,分別對應r、g、b,然后這對應的三個通道分別點積+累加,得到3個feature map,最后再把這3張feature ma相加,然后再加上偏移值b,就可以得到1張feature map。

3. 卷積層的運行:

①輸入:輸入是一張圖片,圖片:寬w,高h,通道數c,由c個w列h行的矩陣構成。輸入矩陣的通道數=卷積核的通道數

②計算:根據padding(填充)、stride(步長),從圖片的左上角開始,假設有3個通道,卷積核的對應通道與輸入圖片的對應通道進行點積和累加的操作,得到1張feature map,然后把3張feature map的對應位置和偏移矩陣b的對應位置相加,即可得到該卷積核對應的feature map。有多少個卷積核,就有多少個featrue map。n個卷積核經過卷積計算,得到n張featrue map。即,1張feature map中的每一個元素,是由對應的filter的不同維度的矩陣,作用于相應維度輸入矩陣的不同位置,進行點積運算和累加,再加上偏移量bias的結果。

③輸出:有n個卷積核,輸出n張feature map,也就是n個矩陣

△padding:填充,在輸入矩陣的四周補0

n=5,padding=1:

△stride:步長,進行卷積運算時,filter在輸入矩陣上移動,進行點積運算,移動的步長

n=5,stride=2:

輸入矩陣:32*32*3;卷積核:5*5*3

有6個卷積核,就有6個feature map

4. 卷積層輸出矩陣的維度:

①通道數= 卷積核的個數 :k個卷積核有k個feature map,輸出矩陣的通道數 / 深度為k

②高度 / 寬度= (圖片的高度or寬度 + 2*padding - 卷積核的高度or寬度)/ 步長 +1

一般圖片的高度寬度是一樣的,卷積核的高度寬度也是一樣的,設圖片的高度/寬度=n,卷積核的高度/寬度=f,填充padding,步長s:

h_new or w_new =(N + 2 * padding - f)/ s +1

padding=0的情況

輸入:32*32*3 卷積核個數:10 卷積核:5*5*3 pading=2 stride=1

常見的設置值:

5. 代碼:

輸入 x:[batch, height, width, in_channel]
權重 w:[height, width, in_channel, out_channel]
輸出 y:[batch, height, width, out_channel]

def conv_layer(x, out_channel, k_size, stride, padding):
    in_channel = x.shape[3].value
    w = tf.Variable(tf.truncated_normal([k_size, k_size, in_channel, out_channel], mean=0, stddev=stddev))
    b = tf.Variable(tf.zeros(out_channel))
    y = tf.nn.conv2d(x, filter=w, strides=[1, stride, stride, 1], padding=padding)
    y = tf.nn.bias_add(y, b)
    y = tf.nn.relu(y)
    return x

參考:

https://blog.csdn.net/dcrmg/article/details/79652487

https://blog.csdn.net/kingroc/article/details/88192878

總結

以上是生活随笔為你收集整理的Convolution Layer:卷积层的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。