卷積操作與自定義算子開(kāi)發(fā)
卷積是卷積神經(jīng)網(wǎng)絡(luò)中的基本操作,對(duì)于圖像的特征提取有著關(guān)鍵的作用,本文首先介紹卷積的基本原理與作用,然后通過(guò)編寫(xiě)程序?qū)崿F(xiàn)卷積操作,并展示了均值、高斯與sobel等幾種經(jīng)典卷積核的卷積效果,接著調(diào)用MindSpore中的卷積算子Conv2d來(lái)實(shí)現(xiàn)卷積操作,最后介紹了MindSpore中pyfunc和TBE兩種自定義算子實(shí)現(xiàn)方法。
卷積基本原理
1.1 卷積的概念
????????卷積操作發(fā)展于信號(hào)處理領(lǐng)域,主要用于削弱原始信號(hào)中混入的噪聲,典型的應(yīng)用場(chǎng)景還有對(duì)于某個(gè)線性時(shí)不變的系統(tǒng),給定輸入信號(hào)和系統(tǒng)響應(yīng),來(lái)求系統(tǒng)的輸出。
????????卷積操作引入到深度學(xué)習(xí)領(lǐng)域后,卷積神經(jīng)網(wǎng)絡(luò)得到了極大的發(fā)展,卷積核中的所有權(quán)重都是隨機(jī)初始化,而不是一開(kāi)始確定的,網(wǎng)絡(luò)每次更新法代都是為了尋找一個(gè)最會(huì)活的卷積核權(quán)重值。
????????卷積與互相關(guān)有著千絲萬(wàn)縷的關(guān)系,對(duì)于二維卷積而言,將卷積核左右翻轉(zhuǎn)、上下翻轉(zhuǎn),再將其與輸入圖片進(jìn)行互相關(guān)運(yùn)算,與直接卷積運(yùn)算在輸出結(jié)果上是等價(jià)的,目前各個(gè)深度學(xué)習(xí)框架的卷積層的API對(duì)于卷積運(yùn)算的實(shí)現(xiàn)使用的是互相關(guān)運(yùn)算。
1.2 卷積的計(jì)算過(guò)程
????????二維卷積操作相當(dāng)于將卷積核作為一個(gè)滑動(dòng)窗口,將其在輸入張量上從左至右、從上至下地滑動(dòng),每滑動(dòng)一下便將卷積核與其相應(yīng)位置計(jì)算出一個(gè)加權(quán)系數(shù),作為輸出張量對(duì)應(yīng)位置上的像素值,其計(jì)算過(guò)程為:將輸入的張量與卷積核進(jìn)行卷積操作,得到輸出矩陣并將其返回。
????????步長(zhǎng)為1的卷積過(guò)程如下圖所示:
1.3 卷積的參數(shù)
????????卷積的參數(shù)有步長(zhǎng)stride、填充pad、卷積核大小、深度、數(shù)量等等。其中:
- 步長(zhǎng)表示卷積核在輸入張量上每次滑動(dòng)的步距,通過(guò)設(shè)置大于1的步長(zhǎng)可以減少輸出張量的大小。
- 填充表示在輸入張量的周?chē)钛a(bǔ)行或列的多少
- 卷積核的深度與輸入張量的深度相同,卷積核的數(shù)量決定了輸出張量的深度
1.4 輸出圖片大小的計(jì)算公式?
輸出圖片大小的計(jì)算如下:
其中:
resh、resw為輸出圖片的高度與寬度
datah、dataw為輸入圖片的高度與寬度
padh、padw為高度與寬度方向上的補(bǔ)邊
filterh、filterw為卷積核的高度與寬度
strideh、stridew為高度與寬度方向上的步長(zhǎng)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-830916.html
1.5 卷積的作用
????????卷積操作可以實(shí)現(xiàn)數(shù)據(jù)降維、特征提取等任務(wù),通過(guò)設(shè)置不同的步長(zhǎng)、補(bǔ)邊與卷積核大小等參數(shù),能夠提取到圖像不同的特征,完成不同的圖像處理任務(wù)。
????????在圖像處理中,卷積核也稱為濾波器,如常用的均值濾波與高斯濾波能夠起到圖像平滑和銳化的效果,而sobel算子和Laplace算子對(duì)于圖像的邊緣檢測(cè)有較好的效果。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-830916.html
到了這里,關(guān)于深度學(xué)習(xí)基礎(chǔ)——卷積神經(jīng)網(wǎng)絡(luò)(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!