深度学习原理与框架- tf.nn.conv2d_transpose(反卷积操作) tf.nn.conv2d_transpose(进行反卷积操作) 对于stride的理解存在问题?...

反卷积操作:

首先对需要进行维度扩张的feature_map 进行补零操作,然后使用3*3的卷积核,进行卷积操作,使得其维度进行扩张,图中可以看出,2*2的feature经过卷积变成了4*4.    3*3的卷积经过扩张以后形成了5*5

                        

      feature_map为偶数                                              feature_map为偶数

 代码:主函数

  with tf.variable_scope('deconv1'):
       # [4, 4, 128, 256]卷积核的大小,4和4表示卷积核的长度,128表示卷积核的个数,256表示卷积核的通道数, [self.batch_size, 64, 64, 128]表示输出层的维度, 2表示1/2的步长
       x = deconv_layer(x, [4, 4, 128, 256], [self.batch_size, 64, 64, 128], 2)
       x = batch_normalize(x, is_training)
       x = tf.nn.relu(x)

调用函数deconv_layer, 个人理解,这里stride的大小,表示的不是补零后卷积核的步长,而是对原始feature的补零的倍数,即扩张的大小

def deconv_layer(x, filter_shape, output_shape, stride):
    # 构造卷积
    filters = tf.get_variable(
        name = 'weight',
        shape=filter_shape,
        dtype=tf.float32,
        initializer=tf.truncated_normal_initializer(stddev=0.1),
        trainable=True
    )
    return tf.nn.conv2d_transpose(x, filters, output_shape, [1, stride, stride, 1])

 

转载于:https://www.cnblogs.com/my-love-is-python/p/10617892.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值