Chapter 2.1 实现一个均值滤波器

    本节我们利用tf的一些函数来实现一个最简单的均值滤波器对图片进行滤波,假设图片的大小为16*16*1,设计一个模块来实现均值滤波

首先介绍一下tf.nn.conv2d函数

conv2d(

input,filter,strides,padding,use_cudnn_on_gpu=None,data_format=None,name=None

)

其中input应该为四维tensor: [batch, in_height, in_width, in_channels]

filter为四维tensor:[filter_height, filter_width, in_channels, out_channels]

padding可以选择:‘SAME'也就是使得输入输出W,H不改变。'VALID'指不加padding

关于padding,查看api可以看到,'SAME'的意思并不是说输入输出不变

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]))

也就是说与strides有关,而valid是指不加padding

strides强制要求首尾必须为一:[1,s,s,1]


以一个错误为例子,学习conv2d的用法:

想法:输入一个 [1,32,32,3]的全部为4的tensor,滤波器尺寸为[2,2,3,6]其值全部为1,步长为2.

希望输出[1,32,32,,6] 其值全部为1

实际上:输出 [1,16,16,,6] 其值全部为12


问题:

1.关于输出值12 :这里是卷积的运算概念没有掌握,filter为6个 [2,2,3]的滤波器,每一个滤波器应该对3个channel的值进行计算:所以是(0.25*4+0.25*4+0.25*4+0.25*4)*3=0.25*4*4*3=12

2.关于padding:上面也提到了,'SAME’并不表示输入输出w,h一致,而是与步长有关

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • CNN on TensorFlow 本文大部分内容均参考于: An Intuitive Explanation o...
    _Randolph_阅读 12,365评论 2 31
  • TensorFlow从0到N专题入口 当看到本篇时,根据TensorFlow官方标准《Deep MNIST for...
    袁承兴阅读 7,893评论 11 24
  • 其实当初提出建立点评团建议,就是自己在写作上遇到瓶颈,不知道自己哪里需要改进,希望能够得到一些指导。没想到,这个建...
    丘二中阅读 2,607评论 7 0
  • 文 / 雨林 今年新春,妈妈买了一棵桃花。这是自我记事以来,家里第一次插桃花。 每每有客人来,妈妈都会热络地解释:...
    不新的创造阅读 3,418评论 0 1
  • 今天听了赵星的一篇文章,讲的是。“我不是有钱,我只是愿意把钱花在这件事上”。有一个同事,每年会花十万甚至20...
    苏小文S阅读 1,423评论 1 1

友情链接更多精彩内容