15-Anti global mean pooling

一、前言
本篇简要介绍一下反全局平均池化原理以及api实现。
二、相关概念
反全局平均池化属于全局平均池化(TensorFlow中的api为tf.avg_pool)的逆操作,主要用于信息的还原,但是因为在池化的过程中不可避免的会丢失一部分的信息,所以我们并不能指望反全局平均池化的复原效果有想象中的能力。
其原理如图所示:
在这里插入图片描述
如图所示,反全局平均池化是近似全局平均池化的逆操作,也就是一个均值映射的过程。
三、代码实现

#反全局平均池化
def max_avg_pool(net,nwp_shape,nwp_shape_T):
    #创建零张量
    network=tf.Variable(tf.zeros([batch_size,nwp_shape[1],nwp_shape[1],nwp_shape_T],dtype=tf.float32))
    for item in range(batch_size):
        # 遍历通道数
        for i in range(nwp_shape_T):
            tmp_num = net[item, 0, 0, i]
            for j in range(nwp_shape[1]):
                for k in range(nwp_shape[1]):
                    network[item, j, k, i].assign(tmp_num)
    return network

四、总结与分析
在写该函数的过程中,本来以为简单的原理实现起来并不复杂,虽然实现了但是还是产生了如下几点问题:
1.使用了多层嵌套的for循环,增加了程序执行的时间复杂度,并且目前还没有找到好的解决办法。
2.当占位符定义为None时,由于?所代表的数字,并不能被range,程序也就不能知道在构造反池化的结构时,到底要申请多少个内存空间,所以本代码中以固定的batch_size来构造确定的网络结构。所以其网络的通用性会弱一些,如果有更好的建议和方法欢迎给出,感激不尽。
五、参考书目
《深度学习之TensorFlow入门、原理与进阶实战》李金洪 ISBN 978-7-111-59005-7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值