全局平均池化(Golbal Average Pooling)与Concatenate层

全局平均池化作为卷积神经网络的一种结构改进,通过替代全连接层,实现参数减少、计算量降低和过拟合风险降低的效果。其核心思想是对特征图进行全局平均,将每个通道的特征图压缩为一个数值,直接用于分类,赋予每个通道明确的类别意义,增强网络的泛化能力。

转载:全剧平均池化

出处:Lin M, Chen Q, Yan S. Network in network[J]. arXiv preprint arXiv:1312.4400, 2013.

定义:将特征图所有像素值相加求平局,得到一个数值,即用该数值表示对应特征图。

目的:替代全连接层

效果:减少参数数量,减少计算量,减少过拟合

 思路:如下图所示。假设最终分成10类,则最后卷积层应该包含10个滤波器(即输出10个特征图),然后按照全局池化平均定义,分别对每个特征图,累加所有像素值并求平均,最后得到10个数值,将这10个数值输入到softmax层中,得到10个概率值,即这张图片属于每个类别的概率值。

意义:对整个网络从结构上做正则化防止过拟合,剔除了全连接层黑箱子操作的特征,直接赋予了每个channel实际的类别意义。

参考

https://blog.youkuaiyun.com/yimingsilence/article/details/79227668

https://blog.youkuaiyun.com/qq_23304241/article/details/80292859

Concatneate层的作用参考:
即相当于张量的拼接操作(你可以想想一下图像中的拼接。)

<think> 我们正在讨论的是编程中的全局变量,特别是Python中的global关键字。根据用户提供的引用内容,我们可以总结以下几点: 1. 引用[1]提到ECMAScript中的Global对象作为全局属性和方法的容器,但用户主要关注Python中的全局变量。 2. 引用[2][3][4][5]都是关于Python中global关键字的使用。 根据引用内容,我们可以整理出关于Python全局变量的关键信息: - 在函数内部,如果要修改全局变量(而不是创建一个同名的局部变量),需要使用`global`关键字声明(引用[2][3][5])。 - 对于可变数据类型(如列表、字典),如果只是修改其中的元素,则不需要使用`global`声明(引用[5])。 - 使用`global`关键字可以在函数内部定义全局变量(引用[4]),但通常不建议这样做,因为会使得代码难以维护。 - 如果不使用`global`声明,在函数内部对变量赋值会创建一个新的局部变量(引用[5])。 用户的问题是想了解golbal全局变量(注意:用户多次将global拼写为golbal,但根据上下文,我们理解其意为global)。我们将针对Python语言进行介绍。 下面开始结构化回答: </think> ### Golbal全局变量介绍 在编程中,全局变量(global variable)是在全局作用域中声明的变量,可在程序的任何位置访问。Python通过`global`关键字实现对全局变量的操作,其核心机制如下: #### 1. 基本作用 - **声明全局变量**:在函数内部使用`global`声明后,可直接修改外部同名全局变量 ```python count = 0 # 全局变量 def increment(): global count # 声明使用全局变量 count += 1 ``` - **创建全局变量**:在函数内部用`global`声明并赋值,会创建新的全局变量(慎用) ```python def create_global(): global new_var # 创建全局变量 new_var = 100 ``` #### 2. 关键特性 - **修改规则**: - 修改**不可变对象**(数字、字符串等)必须使用`global`[^5] - 修改**可变对象**(列表、字典)的元素时无需`global`[^5] ```python lst = [1,2] # 可变对象 def modify_list(): lst[0] = 9 # 直接修改元素,无需global num = 10 # 不可变对象 def modify_num(): global num num = 20 # 必须global ``` - **作用域冲突**:函数内未声明`global`的同名赋值会创建**新局部变量**,导致外部变量被遮蔽[^5] #### 3. 其它语言对比 | 特性 | Python | JavaScript | |--------------------|-----------------------------|----------------------| | 全局对象 | 无单独全局对象 | `window`(浏览器) | | 全局变量声明 | 需显式`global`声明 | 自动挂载到全局对象 | | 跨模块访问 | `import`模块后使用 | 直接访问`window`属性 | #### 4. 注意事项 - **避免滥用**:过度使用全局变量会降低代码可维护性,建议优先使用函数参数和返回值 - **替代方案**:对于复杂场景,可使用`nonlocal`(闭包)、类属性或单例模式 - **线程安全**:多线程环境下修改全局变量需加锁(如`threading.Lock`) > 示例:典型修改陷阱 > ```python > x = 1 > def func(): > if x == 1: # 此处已引用全局x > x = 2 # 触发UnboundLocalError(未声明global) > ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值