??? 本節(jié)我們利用tf的一些函數(shù)來(lái)實(shí)現(xiàn)一個(gè)最簡(jiǎn)單的均值濾波器對(duì)圖片進(jìn)行濾波,假設(shè)圖片的大小為16*16*1,設(shè)計(jì)一個(gè)模塊來(lái)實(shí)現(xiàn)均值濾波
首先介紹一下tf.nn.conv2d函數(shù)
conv2d(
input,filter,strides,padding,use_cudnn_on_gpu=None,data_format=None,name=None
)
其中input應(yīng)該為四維tensor: [batch, in_height, in_width, in_channels]
filter為四維tensor:[filter_height, filter_width, in_channels, out_channels]
padding可以選擇:‘SAME'也就是使得輸入輸出W,H不改變。'VALID'指不加padding
關(guān)于padding,查看api可以看到,'SAME'的意思并不是說(shuō)輸入輸出不變
For the'SAME'padding, the output height and width are computed as:
out_height=ceil(float(in_height)/float(strides[1]))
out_width=ceil(float(in_width)/float(strides[2]))
也就是說(shuō)與strides有關(guān),而valid是指不加padding
strides強(qiáng)制要求首尾必須為一:[1,s,s,1]
以一個(gè)錯(cuò)誤為例子,學(xué)習(xí)conv2d的用法:
想法:輸入一個(gè) [1,32,32,3]的全部為4的tensor,濾波器尺寸為[2,2,3,6]其值全部為1,步長(zhǎng)為2.
希望輸出[1,32,32,,6] 其值全部為1
實(shí)際上:輸出 [1,16,16,,6] 其值全部為12

問(wèn)題:
1.關(guān)于輸出值12 :這里是卷積的運(yùn)算概念沒(méi)有掌握,filter為6個(gè) [2,2,3]的濾波器,每一個(gè)濾波器應(yīng)該對(duì)3個(gè)channel的值進(jìn)行計(jì)算:所以是(0.25*4+0.25*4+0.25*4+0.25*4)*3=0.25*4*4*3=12
2.關(guān)于padding:上面也提到了,'SAME’并不表示輸入輸出w,h一致,而是與步長(zhǎng)有關(guān)