前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TensorFlow 中的形态学网络层

TensorFlow 中的形态学网络层

作者头像
caoqi95
发布2019-05-10 11:34:48
1.4K0
发布2019-05-10 11:34:48
举报

在 TensorFlow 中,提供 tf.nn.dilation2dtf.nn.erosion2d 这两种形态学网络层,分别对应着形态学操作上的膨胀和腐蚀操作。

代码语言:javascript
复制
tf.nn.erosion2d(
    value,
    kernel,
    strides,
    rates,
    padding,
    name=None
)

tf.nn.dilation2d(
    input,
    filter,
    strides,
    rates,
    padding,
    name=None
)

拿膨胀来说明,在文档中提到:

Computes the grayscale dilation of 4-D value and 3-D kernel tensors.

详细一点,灰度的 2D 形态操作如下:

代码语言:javascript
复制
output[b, y, x, c] =
   max_{dy, dx} input[b,
                      strides[1] * y + rates[1] * dy,
                      strides[2] * x + rates[2] * dx,
                      c] +
                filter[dy, dx, c]

意思就是,filter (kernel) 中的值被添加到图像中的每一位置的值中,然后取最大值作为输出值。

这里的 filter 也称为 structuring function。因为在形态学中,filter 就是 structure elements

也就是说,灰度的 2D 形态操作是最大和相关。

将其与卷积操作做对比,就是把公式中的乘法取代成了加法,将积分(或者求和)取代成了取最大值。

离散形式:

可以发现和 max-pool 的操作有点点类似。是的,当过滤器的大小等于池内核大小,并全为 0 时, 就是最大池化操作了。

参考

[1]. tf.nn.dilation2d [2]. Tensorflow dilation behave differently than morphological dilation

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.04.28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档