全连接层后面加bn层_神经网络基本组成 - 池化层、Dropout层、BN层、全连接层 13...

本文介绍了深度学习中常用的池化层(最大值池化、平均值池化)、Dropout层和BN(Batch Normalization)层。池化层用于降低特征图参数量,提升计算速度,防止过拟合。Dropout通过随机失活神经元,起到正则化效果。BN层则通过批归一化加速网络收敛,简化调参,并防止过拟合。全连接层虽参数量大,但在现代网络中常被全局平均池化层替代以减少参数并防止过拟合。
摘要由CSDN通过智能技术生成

1. 池化层

在卷积网络中, 通常会在卷积层之间增加池化(Pooling) 层, 以降低特征图的参数量, 提升计算速度, 增加感受野, 是一种降采样操作。池化是一种较强的先验, 可以使模型更关注全局特征而非局部出现的位置, 这种降维的过程可以保留一些重要的特征信息, 提升容错能力, 并且还能在一定程度上起到防止过拟合的作用。

在物体检测中, 常用的池化有最大值池化(Max Pooling) 与平均值池化(Average Pooling) 。 池化层有两个主要的输入参数, 即核尺寸kernel_size与步长stride。 如图3.7所示为一个核尺寸与步长都为2的最大值池化过程, 以左上角为例, 9、 20、 15与26进行最大值池化, 保留26。

下面是PyTorch对于池化层的实现。

1 importtorch2 from torch importnn3

4 max_pooling = nn.MaxPool2d(2, stride=2)5 aver_pooling = nn.AvgPool2d(2, stride=2)6

7 input = torch.randn(1, 1, 4, 4)8 print(input)9 >> tensor([[[[ 1.2237, -0.8173, -0.2594, 0.1698],10 [-0.1023, 0.6973, -0.6429, 0.8561],11 [-0.3660, 0.1269, 0.2488, 0.0576],12 [ 0.0859, 0.1622, -0.0725, -0.0237]]]])13

14 #池化主要需要两个参数, 第一个参数代表池化区域大小, 第二个参数表示步长

15 out_max =max_pooling(input)16 print(out_max)17 >> tensor([[[[1.2237, 0.8561],18 [0.1622, 0.2488]]]])19

20 #调用最大值池化与平均值池化, 可以看到size从[1, 1, 4, 4]变为了[1, 1, 2, 2]

21 out_aver =aver_pooling(input)22 print(out_aver)23 >> tensor([[[[0.2503, 0.0309],24 [0.0023, 0.0525]]]])

View Code

2. Dropout层    在深度学习中, 当参数过多而训练样本又比较少时, 模型容易产生过拟合现象。 过拟合是很多深度学

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值