這篇文章主要講解了如何實(shí)現(xiàn)Tensorflow卷積和手寫(xiě)python代碼實(shí)現(xiàn)卷積的方法,內(nèi)容清晰明了,對(duì)此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。
作為一家“創(chuàng)意+整合+營(yíng)銷”的成都網(wǎng)站建設(shè)機(jī)構(gòu),我們?cè)跇I(yè)內(nèi)良好的客戶口碑。創(chuàng)新互聯(lián)公司提供從前期的網(wǎng)站品牌分析策劃、網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、創(chuàng)意表現(xiàn)、網(wǎng)頁(yè)制作、系統(tǒng)開(kāi)發(fā)以及后續(xù)網(wǎng)站營(yíng)銷運(yùn)營(yíng)等一系列服務(wù),幫助企業(yè)打造創(chuàng)新的互聯(lián)網(wǎng)品牌經(jīng)營(yíng)模式與有效的網(wǎng)絡(luò)營(yíng)銷方法,創(chuàng)造更大的價(jià)值。從一個(gè)通道的圖片進(jìn)行卷積生成新的單通道圖的過(guò)程很容易理解,對(duì)于多個(gè)通道卷積后生成多個(gè)通道的圖理解起來(lái)有點(diǎn)抽象。本文以通俗易懂的方式講述卷積,并輔以圖片解釋,能快速理解卷積的實(shí)現(xiàn)原理。最后手寫(xiě)python代碼實(shí)現(xiàn)卷積過(guò)程,讓Tensorflow卷積在我們面前不再是黑箱子!
注意:
本文只針對(duì)batch_size=1,padding='SAME',stride=[1,1,1,1]進(jìn)行實(shí)驗(yàn)和解釋,其他如果不是這個(gè)參數(shù)設(shè)置,原理也是一樣。
1 Tensorflow卷積實(shí)現(xiàn)原理
先看一下卷積實(shí)現(xiàn)原理,對(duì)于in_c個(gè)通道的輸入圖,如果需要經(jīng)過(guò)卷積后輸出out_c個(gè)通道圖,那么總共需要in_c * out_c個(gè)卷積核參與運(yùn)算。參考下圖:
如上圖,輸入為[h:5,w:5,c:4],那么對(duì)應(yīng)輸出的每個(gè)通道,需要4個(gè)卷積核。上圖中,輸出為3個(gè)通道,所以總共需要3*4=12個(gè)卷積核。對(duì)于單個(gè)輸出通道中的每個(gè)點(diǎn),取值為對(duì)應(yīng)的一組4個(gè)不同的卷積核經(jīng)過(guò)卷積計(jì)算后的和。
接下來(lái),我們以輸入為2個(gè)通道寬高分別為5的輸入、3*3的卷積核、1個(gè)通道寬高分別為5的輸出,作為一個(gè)例子展開(kāi)。
2個(gè)通道,5*5的輸入定義如下:
#輸入,shape=[c,h,w] input_data=[ [[1,0,1,2,1], [0,2,1,0,1], [1,1,0,2,0], [2,2,1,1,0], [2,0,1,2,0]], [[2,0,2,1,1], [0,1,0,0,2], [1,0,0,2,1], [1,1,2,1,0], [1,0,1,1,1]], ]