当前位置: 首页 > article >正文

神经网络入门实战:(十一)池化层搭建,以及填充层的说明

(一) 最大池化层的结果与作用:

池化层有很多种,但是最常用的就是最大池化层,

1)结果:

卷积核经过之处,会从输入矩阵中与卷积核尺寸相同的区域中,挑出最大的数

在这里插入图片描述

若卷积核超出输入矩阵的边界,此时 ceil_mode=True (第二大点介绍)时,将仍然找出最大值;若ceil_mode=False 时,将直接舍弃。最后将输出数值组成一个新的输出矩阵。

在这里插入图片描述

2)作用:

  • 降维:池化层通过减少输入特征图的尺寸来降低数据的维度。这可以减少后续层的计算量,从而提高训练和推理的速度。
  • 特征提取:池化操作能够提取输入数据的主要特征。例如,最大池化(Max Pooling)取每个池化窗口中的最大值,从而保留了局部区域中最显著的特征。这有助于提高模型对特征的关注度。
  • 平移不变性:池化层使得模型对于输入数据的微小平移具有一定的鲁棒性。通过保留重要的特征并丢弃不必要的信息,模型可以更好地适应输入的变化。
  • 减少过拟合:通过降低模型复杂性,池化层可以帮助减少过拟合的风险。较小的特征图意味着模型学习到的参数更少,从而提高泛化能力。
  • 引入抽象:池化层可以通过减少特征图的空间信息,使得后续层能够处理更加抽象的特征。这有助于捕捉更高级的特征表示。

(二) 池化层搭建(Pooling Layers)

池化层不可以改变通道数

最大池化,也被称为“最大下采样池化”。

nn.MaxPool1d :一维最大池化

nn.MaxPool2d二维最大池化(最常用)

nn.MaxPool3d :三维最大池化

nn.MaxUnpool2d:二维最大上采样池化

调用函数 torch.nn.MaxPool2d

输入只能是浮点型

torch.nn.MaxPool2d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)

在这里插入图片描述

①参数:

  • kernel_size:卷积核的大小。可以是单个数字,也可以是元组。①kernel_size=3,即形状为3×3;②kernel_size=(3,5),即形状为3×5。

    这里不用手动设置卷积核的内容 weight ,此模块函数会对一些分布函数进行采样,从而得出 weight 的值,并且这些值都是**可学习的**!!

  • stride:卷积核的步长。可以是单个数字或元组 (sH, sW)默认值:kernel_size

  • padding:输入图像四周的隐式填充。可以是字符串 {'valid', 'same'}、单个数字或元组 (padH, padW)。默认值:0 ('valid'表示无填充)。

    想要输出图像的尺寸和输入图像的尺寸相同,那么填充层就要设置为 (1,1)。

  • ceil_mode:面对卷积核移动到超出输入边界的情况:设置为 True 时,将仍然输出最大值;设置为 False 时,将会舍弃。默认是 False

②示例:

import torch
from torch import nn
import torchvision
from torchvision import transforms
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter


dataclass_transform = transforms.Compose([
	transforms.ToTensor(),
])

test_dataset = torchvision.datasets.CIFAR10(root='E:\\4_Data_sets\\species recognition', train=False,transform=dataclass_transform, download=True)
test_dataloader = DataLoader(dataset=test_dataset,batch_size=64)

class testNet(nn.Module):
	def __init__(self):
		super(testNet, self).__init__()
		self.maxpool = nn.MaxPool2d(3,ceil_mode=False)

	def forward(self, input):
		output = self.maxpool(input)
		return output

testNet_Instance = testNet()

writer = SummaryWriter('logs')
step = 0
for data in test_dataloader:
	imgs, labels = data
	writer.add_images("test_maxpool2d_input", imgs, step)
	outputs = testNet_Instance(imgs)
	writer.add_images("test-maxpool2d_output", outputs, step)
	step += 1

writer.close()

运行结果:

在这里插入图片描述


(三) 填充层(Padding Layers)

因为卷积层中包含了填充的步骤,所以这里不用单独搭建。


上一篇下一篇
神经网络入门实战(十)神经网络入门实战(十二)

http://www.kler.cn/a/420963.html

相关文章:

  • 如何使用 pprof 简单检测和修复 Go 中的内存泄漏
  • python源码实例游戏开发小程序办公自动化网络爬虫项目开发源码(250+个项目、26.6GB)
  • Linux中dos2unix详解
  • 基于链表的基础笔试/面试题
  • 指针(上)
  • 二阶信息在机器学习中的优化;GPTQ算法利用近似二阶信息;为什么要求近似二阶(运算量大,ReLu0点不可微)
  • 解读 77页2024 集团企业IT技术架构规划方案
  • k8s使用的nfs作为sc。
  • 传统客服中心和呼叫中心客服系统的区别
  • 时间序列模型在LSTM中的特征输入
  • AlmaLinux8.10安装samba实现与Windows文件共享
  • 获取联通光猫的管理员密码
  • 【AI日记】24.12.03 kaggle 比赛 Titanic-6
  • SVN客户端及语言包免费下载 无需积分
  • 计算机网络八股整理(四)
  • 【SpringBoot】SpringBoot优雅停机机制
  • Springboot(五十)SpringBoot3集成sentinel并连接sentinel-dashboard
  • 【大数据学习 | 面经】Spark3.x对比2.x有哪些优点
  • 通过搭建安消一体化管理体系,高校实现应急中心数字化转型升级新动能
  • 树和二叉树(概念 结构)
  • 手机租赁系统开发全攻略 创新服务助力企业智能转型
  • 库存管理如何做到“先进先出”?
  • delphi 12 idhttpsever(S)+idhttp(C) 实现简单的JSON API服务
  • Navicat连接SQL Server
  • 初始Python篇(9)—— 函数
  • Creating Server TCP listening socket *:6379: bind: No error