Tensorflow 反卷积

Tenssorflow中提供了tf.nn.conv2d_tranpose()接口实现反卷积。
关于反卷积的实现:

import tensorflow as tf

filter=tf.constant(1.0, shape=[3, 3, 1, 1])


x1=tf.constant(1.0,shape=[1,5,5,1])
x2=tf.constant(1.0,shape=[1,2,2,1])

conv_1=tf.nn.conv2d(x1, filter, strides=[1, 2, 2, 1], padding='SAME')
transpose_conv_1=tf.nn.conv2d_transpose(conv_1, filter, output_shape=[1, 5, 5, 1],
                                        strides=[1,2,2,1], padding='SAME')

transpose_conv_2=tf.nn.conv2d_transpose(conv_1, filter, output_shape=[1, 7, 7, 1],
                                        strides=[1,2,2,1], padding='VALID')


transpose_conv_3=tf.nn.conv2d_transpose(x2,filter,output_shape=[1,4,4,1],
                                        strides=[1,1,1,1],padding='VALID')

transpose_conv_4=tf.nn.conv2d_transpose(x2,filter,output_shape=[1,2,2,1],
                                        strides=[1,1,1,1],padding='SAME')

with tf.Session() as sess:
    tf.initialize_all_variables()
    print sess.run(conv_1)
    print 'transpose_conv_1'
    print sess.run(transpose_conv_1)
    print 'transpose_conv_2'
    print sess.run(transpose_conv_2)
    print 'transpose_conv_3'
    print sess.run(transpose_conv_3)
    print 'transpose_conv_4'
    print sess.run(transpose_conv_4)
输出:
transpose_conv_1

[[[[ 1.]
[ 2.]
[ 1.]
[ 2.]
[ 1.]]

[[ 2.]
[ 4.]
[ 2.]
[ 4.]
[ 2.]]

[[ 1.]
[ 2.]
[ 1.]
[ 2.]
[ 1.]]

[[ 2.]
[ 4.]
[ 2.]
[ 4.]
[ 2.]]

[[ 1.]
[ 2.]
[ 1.]
[ 2.]
[ 1.]]]]

stride=2,padding=SAME的卷积过程见下图:

avatar

transpose_conv_2

[[[[ 1.]
[ 1.]
[ 2.]
[ 1.]
[ 2.]
[ 1.]
[ 1.]]

[[ 1.]
[ 1.]
[ 2.]
[ 1.]
[ 2.]
[ 1.]
[ 1.]]

[[ 2.]
[ 2.]
[ 4.]
[ 2.]
[ 4.]
[ 2.]
[ 2.]]

[[ 1.]
[ 1.]
[ 2.]
[ 1.]
[ 2.]
[ 1.]
[ 1.]]

[[ 2.]
[ 2.]
[ 4.]
[ 2.]
[ 4.]
[ 2.]
[ 2.]]

[[ 1.]
[ 1.]
[ 2.]
[ 1.]
[ 2.]
[ 1.]
[ 1.]]

[[ 1.]
[ 1.]
[ 2.]
[ 1.]
[ 2.]
[ 1.]
[ 1.]]]]

transpose_conv_3

[[[[ 1.]
[ 2.]
[ 2.]
[ 1.]]

[[ 2.]
[ 4.]
[ 4.]
[ 2.]]

[[ 2.]
[ 4.]
[ 4.]
[ 2.]]

[[ 1.]
[ 2.]
[ 2.]
[ 1.]]]]

stride=1,padding=VALID的卷积过程见下图:

avatar

transpose_conv_4

[[[[ 4.]
[ 4.]]

[[ 4.]
[ 4.]]]]


参考资料:
1. http://deeplearning.net/software/theano_versions/dev/tutorial/conv_arithmetic.html#transposed-convolution-arithmetic

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值