资源经验分享反卷积(Transposed Convolution)

反卷积(Transposed Convolution)

2019-12-11 | |  74 |   0

原标题:反卷积(Transposed Convolution)

原文来自:博客园      原文链接:https://www.cnblogs.com/Peyton-Li/p/11982474.html


反卷积的具体计算步骤

令图像为

01.png

 

卷积核为

03.png

 

 

 

case 1

如果要使输出的尺寸是 5x5,步数 stride=2 ,tensorflow 中的命令为:

transpose_conv = tf.nn.conv2d_transpose(value=input, 
                                        filter=kernel, 
                                        output_shape=[1,5,5,1], 
                                        strides=2, 
                                        padding='SAME')

当执行 transpose_conv 命令时,tensorflow 会先计算卷积类型、输入尺寸、步数和输出尺寸之间的关系是否成立,如果不成立,会直接提示错误,如果成立,执行如下操作:

1. 现根据步数strides对输入的内部进行填充,这里strides可以理解成输入放大的倍数,即在input的每个元素之间填充 0,0的个数n与strides的关系为:n=strides-1

例如这里举例的strides=2,即在input的每个元素之间填1个0:

[公式]

2. 接下来,用卷积核kernel对填充后的输入inputpad进行步长stride=1的正向卷积,根据正向卷积输出尺寸公式: [公式] 得到输出尺寸是5x5,反卷积公式中我们给出的输出尺寸参数output_shape也是为5,两者相同,所以可以进行计算,结果为:

[公式]

与 tensorflow 的运行结果相同。

case 2

我们将 case 1 中的输出尺寸output_shape改成6,其他参数均不变,tensorflow 中的命令为:

transpose_conv = tf.nn.conv2d_transpose(value=input, 
                                        filter=kernel, 
                                        output_shape=[1,6,6,1], 
                                        strides=2, 
                                        padding='SAME')

卷积类型是 same,我们首先在外围填充一圈0:

[公式]

这时发现,填充后的输入尺寸与3x3的卷积核卷积后的输出尺寸是5x5,没有达到output_shape的6x6,这就需要继续填充0,tensorflow 的计算规则是优先在左侧和上侧填充一排0,填充后的输入变为:

[公式]

接下来,再对这个填充后的输入与3x3的卷积核卷积,结果为:

[公式]

与 tensorflow 的运行结果相同。

 

参考资料:

https://zhuanlan.zhihu.com/p/48501100

免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。

合作及投稿邮箱:E-mail:editor@tusaishared.com

上一篇:用PMML实现机器学习模型的跨平台上线

下一篇:python使用face_recognition包的环境设置

用户评价
全部评价

热门资源

  • Python 爬虫(二)...

    所谓爬虫就是模拟客户端发送网络请求,获取网络响...

  • TensorFlow从1到2...

    原文第四篇中,我们介绍了官方的入门案例MNIST,功...

  • TensorFlow从1到2...

    “回归”这个词,既是Regression算法的名称,也代表...

  • 机器学习中的熵、...

    熵 (entropy) 这一词最初来源于热力学。1948年,克...

  • TensorFlow2.0(10...

    前面的博客中我们说过,在加载数据和预处理数据时...