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

pytorch学习笔记-最大池化maxpooling的使用、搭建多层网络并验证、sequential的使用

二编:插入说明一下吧,这一系列一直都是作为我的学习笔记使用的,记录的是如何使用pytorch,以及遇到的一些困惑and自问自答,并不涉及到深度学习相关知识的讲解,另外,博主此前有tf基础(虽然忘光了且很菜),因此对一些东西可能会不作记录,有问题可以评论区提问或者参考一些专门讲此类知识的博客或者视频
---------------------------------------分割线------------------------------------------

最近忙着摸鱼(不是 所以没啥时间继续学习/看书and更新…闲里偷忙的上号来更新一点(跪下来求自己赶紧完结吧
其实根据上一篇大概也能推导出大部分层都是去nn底下看看自己需要的层对应的语法然后在自己的module里加入使用就可以,因此,在接下来不对这些层做具体解释了,下面是一个maxpooling的样例:

import torch
from torchvision import transforms, datasets
from torch.utils.data import DataLoader
import torch.nn as nn
from torch.utils.tensorboard import SummaryWriterdata_transforms = transforms.Compose([transforms.ToTensor()
])test_data = datasets.CIFAR10(root="./dataset",train=False,transform=data_transforms)dataloader = DataLoader(test_data,batch_size=64)class myModule(nn.Module):def __init__(self):super().__init__()self.maxpool1 = nn.MaxPool2d(kernel_size=3,ceil_mode=False)def forward(self, input):output = self.maxpool1(input)return outputmy_module = myModule()writer = SummaryWriter("maxpool_logs")step = 0for data in dataloader:imgs, target = datawriter.add_images("input",imgs,step)output = my_module(imgs)writer.add_images("output",output,step)step +=1writer.close()

下面来按照这个图搭建一下网络,插图来自土堆老师的视频,重点关注如何根据图示模型给出的参数推导编程中缺少的参数
在这里插入图片描述

import torch
import torch.nn as nn
from torch.nn import Conv2d, MaxPool2d, Flatten, Linearclass myModule(nn.Module):def __init__(self):super().__init__()self.conv1 = Conv2d(3,32,5,padding=2)self.maxpool1 = MaxPool2d(2)self.conv2 = Conv2d(32,32,5,padding=2)self.maxpool2 = MaxPool2d(2)self.conv3 = Conv2d(32,64,5,padding=2)self.maxpool3 = MaxPool2d(2)self.flatten = Flatten()self.linear1 = Linear(1024,64)self.linear2 = Linear(64,10)def forward(self, x):x = self.conv1(x)x = self.maxpool1(x)x = self.conv2(x)x = self.maxpool2(x)x = self.conv3(x)x = self.maxpool3(x)x = self.flatten(x)x = self.linear1(x)x = self.linear2(x)return xmy_module = myModule()
##模型验证
#创建张量流,bt_size64 channel3 H=W=32,全填充为1
input = torch.ones([64,3,32,32])
output = my_module(input)
print(output.shape)
# torch.Size([64, 10])

最后输出的前一个是batch_size,因此关注最后一个输出的就好,10和图对应了,所以模型是对的

考虑到每次在forward里写这么多还是有点麻烦,所以引入sequential(好像tensorFlow也有这个?好久没写过tf语法了记错了就当我没说吧…
其实使用感和transform.Compose很类似,而且也只是个语法,所以直接上例程吧,一看就知道怎么使用了

import torch
import torch.nn as nn
from torch.nn import Conv2d, MaxPool2d, Flatten, Linear, Sequentialclass myModule(nn.Module):def __init__(self):super().__init__()self.model1 = Sequential(Conv2d(3,32,5,padding=2),MaxPool2d(2),Conv2d(32,32,5,padding=2),MaxPool2d(2),Conv2d(32,64,5,padding=2),MaxPool2d(2),Flatten(),Linear(1024,64),Linear(64,10))def forward(self, x):x = self.model1(x)return xmy_module = myModule()
##模型验证
#创建张量流,bt_size64 channel3 H=W=32,全填充为1
input = torch.ones([64,3,32,32])
output = my_module(input)
print(output.shape)
# torch.Size([64, 10])

另外,可以使用add_graph看见模型具体的情况,使用方法如下:

writer = SummaryWriter("seq_logs")
writer.add_graph(my_module, input)
writer.close()

在这里插入图片描述

http://www.dtcms.com/a/319698.html

相关文章:

  • golang的面向对象编程,struct的使用
  • 2.8 逻辑符号
  • Linux怎么查看时区信息?(Linux时区)(tzselect)
  • Java中接口与抽象类
  • 处理失败: module ‘fitz‘ has no attribute ‘open‘
  • 传统防火墙与下一代防火墙
  • 华为 2025 校招目标院校
  • 【2025最新】在 macOS 上构建 Flutter iOS 应用
  • 嵌入式学习---在 Linux 下的 C 语言学习 Day10
  • 可执行文件的生成与加载执行
  • 超高车辆如何影响城市立交隧道安全?预警系统如何应对?
  • [论文阅读] 软件工程 | 软件工程中的同理心:表现、动机与影响因素解析
  • oracle 11G安装大概率遇到问题
  • 大文件断点续传(vue+springboot+mysql)
  • Failed to restart docker.service: Unit docker.service is masked.
  • PostgreSQL 数据库 设置90天密码过期时间的完整方案
  • 读取了错误数据导致STM32 单片机Hard Fault
  • 智能升级革命:Deepoc具身模型开发板如何让传统除草机器人拥有“认知大脑”
  • 分布式微服务--GateWay(过滤器及使用Gateway注意点)
  • 翻译模型(TM):基于短语的统计翻译模型(PBSMT)的构建
  • C++语法与面向对象特性(2)
  • PyTorch如何实现婴儿哭声检测和识别
  • 目标检测数据集 - 自动驾驶场景道路异常检测数据集下载「包含VOC、COCO、YOLO三种格式」
  • 接口自动化-pytest
  • OpenAI 开源模型 gpt-oss 正式上线微软 Foundry 平台
  • 网络可视,运维无忧:分钟级定位,告别盲目扩容
  • 从零开始构建情绪可视化日记平台 - React + TypeScript + Vite
  • CPTS Remote 复现
  • Redisson中的分布式锁
  • 自动化办公革命:3小时完成8小时工作量