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

Pytorch个人学习记录总结 06

目录

神经网络-卷积层 torch.nn.Conv2d

神经网络-最大池化的使用 torch.nn.MaxPool2d


神经网络-卷积层 torch.nn.Conv2d

torch.nn.Conv2d的官方文档地址

CLASS torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode=‘zeros’, device=None, dtype=None)


卷积动画的链接:https://github.com/vdumoulin/conv_arithmetic/blob/master/README.mdicon-default.png?t=N6B9https://github.com/vdumoulin/conv_arithmetic/blob/master/README.md

注意

  • 默认bias=True,这说明PyTorch中Con2d是默认给卷积操作加了偏置的。
  • 还有一些默认值:stride=1,padding=0等。
  • out_channels输出通道数,相当于就是卷积核的个数
  • dilation:需要使用空洞卷积时再进行设置。
    import torch
    from torch import nn
    from torch.nn import Conv2d
    from torch.utils.data import DataLoader
    from torch.utils.tensorboard import SummaryWriter
    from torchvision import datasets
    from torchvision.transforms import transforms# 1. 加载数据
    dataset = datasets.CIFAR10('./dataset', train=False, transform=transforms.ToTensor(), download=True)
    dataloader = DataLoader(dataset, batch_size=64, shuffle=True, num_workers=0, drop_last=False)# 2. 构造模型
    class Model(nn.Module):def __init__(self):super(Model, self).__init__()self.conv1 = Conv2d(in_channels=3, out_channels=6, kernel_size=3, stride=1)def forward(self, x):return self.conv1(x)writer = SummaryWriter('./logs/Conv2d')# 3. 实例化一个模型对象,进行卷积
    model = Model()
    step = 0for data in dataloader:imgs, targets = datawriter.add_images('imgs_ch3', imgs, step)# 4. 用tensorboard打开查看图像。但是注意,add_images的输入图像的通道数只能是3
    #    所以如果通道数>3,则可以先采用小土堆的这个不严谨的做法,在tensorboard中查看一下图片outputs = model(imgs)outputs = torch.reshape(outputs, (-1, 3, 30, 30))writer.add_images('imgs_ch6', outputs, step)step += 1writer.close()
    

    神经网络-最大池化的使用 torch.nn.MaxPool2d

池化也可成为下采样(就是缩小输入图像尺寸,但是不会改变输入图像的通道数)。常见的有MaxPool2d、AvgPool2d等。相反有上采样MaxUnPool2d。

MaxPool2d的官方文档地址:MaxPool2d — PyTorch 2.0 documentation 

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

注意

  • stride默认=kernel_size
  • ceil_mode默认是False,也就是说事向下取整

pool和conv后的图像尺寸N计算公式是一样的:N = ( W − F + 2 ∗ P ) / S + 1 N=(W-F+2*P)/S+1N=(W−F+2∗P)/S+1,且都是默认N向下取整。
 

  1. 在构造tensor的时候,最好指定元素的数据类型是float,即在最后加上dtype=torch.float32,这样后面有些操作才不会出错。
  2. 池化的作用:保持输入图像的特征,且减小输入量,能加快训练。(就类似于B站视频有10080P的也会有720P的,720P虽然不如1080P那么高清,但是仍然能够看出视频中物体的特征信息,有点像打了马赛克一样)
    import torch
    import torchvision.datasets
    from torch import nn
    from torch.utils.data import DataLoader
    from torch.utils.tensorboard import SummaryWriterclass Model(nn.Module):def __init__(self):super(Model, self).__init__()self.maxpool1 = nn.MaxPool2d(kernel_size=3)  # 默认:stride=kernel_size,ceil_mode=Falseself.maxpool2 = nn.MaxPool2d(kernel_size=3, ceil_mode=True)def forward(self, x):return self.maxpool1(x), self.maxpool2(x)model = Model()# -------------1.上图例子,查看ceil_mode为True或False的池化结果--------------- #
    input = torch.tensor([[1, 2, 0, 3, 1],[0, 1, 2, 3, 1],[1, 2, 1, 0, 0],[5, 2, 3, 1, 1],[2, 1, 0, 1, 1]], dtype=torch.float32)input = torch.reshape(input, (-1, 1, 5, 5))
    out1, out2 = model(input)
    print('out1={}\nout2={}'.format(out1, out2))# --------------2.加载数据集,并放入tensorboard查看图片----------------------- #
    dataset = torchvision.datasets.CIFAR10('dataset', train=False, transform=torchvision.transforms.ToTensor(),download=True)
    dataloader = DataLoader(dataset, batch_size=64, shuffle=True)writer = SummaryWriter('./logs/maxpool')
    step = 0
    for data in dataloader:imgs, targets = datawriter.add_images('imgs', imgs, step)imgs, _ = model(imgs)writer.add_images('imgs_maxpool', imgs, step)step += 1writer.close()
    

http://www.lryc.cn/news/97067.html

相关文章:

  • Rust之泛型、特性和生命期(四):验证有生存期的引用
  • kubesphere安装中间件
  • zookeeper学习(二) 集群模式安装
  • 选择合适的图表,高效展现数据魅力
  • springboot自动装配
  • python小记-队列
  • SpringBoot——持久化技术
  • Kafka 入门到起飞 - 生产者参数详解 ,什么是生产者确认机制? 什么是ISR? 什么是 OSR?
  • 【文献分享】比目前最先进的模型轻30%!高效多机器人SLAM蒸馏描述符!
  • 【数据动态填充到element表格;将带有标签的数据展示为文本格式】
  • 小程序轮播图的两种后台方式(PHP)--【浅入深出系列008】
  • 使用ComPDFKit PDF SDK 构建iOS PDF阅读器
  • 一套流程6个步骤,教你如何正确采购询价
  • git使用
  • SkyWalking链路追踪-搭建-spring-boot-cloud-单机环境 之《10 分钟快速搭建 SkyWalking 服务》
  • Rabbit MQ整合springBoot
  • Golang 中的 time 包详解(一):time.Time
  • CMU 15-445 -- Database Recovery - 18
  • HTTP Header定制,客户端使用Request,服务器端使用Response
  • Vue 3编写的父子组件示例,包括传递数据和调用父组件方法
  • [ 容器 ] Docker 的数据管理
  • 【环境配置】使用Docker搭建LAMP环境
  • MLIR (Multi-Level Intermediate Representation)
  • VR全景在酒店的发展状况如何?酒店该如何做营销?
  • Winform使用PictureBox控件显示图片并且自适应
  • HTML中的焦点管理
  • 如何区分接口测试和功能测试
  • limit分页查询
  • mysql null 值查询不出来问题
  • 面试之CurrentHashMap的底层原理