【Pytorch】10.CIFAR10模型搭建

2024-05-15 22:04
文章标签 模型 搭建 pytorch cifar10

本文主要是介绍【Pytorch】10.CIFAR10模型搭建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CIFAR10模型

torchvision中官方给出的一个数据集,可以通过

dataset = torchvision.datasets.CIFAR10('./data', train=False, download=True, transform=torchvision.transforms.ToTensor())

来下载到指定文件夹

搭建CIFAR10模型

首先我们先去搜一下CIFAR10 model structure
在这里插入图片描述
可以看到,模型的训练步骤为

  • 输入为3通道 32*32像素,通过5*5的卷积核进行卷积操作,得到32通道32*32像素
  • 进行2*2卷积核的最大池化操作变为32通道16*16像素
  • 进行5*5卷积核的卷积操作变为32通道16*16像素
  • 进行2*2卷积核的最大池化操作变为32通道8*8像素
  • 进行5*5卷积核的卷积操作变为64通道8*8像素
  • 进行2*2卷积核的最大池化操作变为64通道4*4像素
  • 进行Flatten全链接操作展开为1024长度
  • 通过线性激活变为64长度
  • 通过线性激活变为10长度
    然后我们就可以进行搭建了

首层卷积层

输入为3通道 32*32像素,通过5*5的卷积核进行卷积操作,得到32通道32*32像素
因为输入输出都是32*32像素,所以我们就需要根据官方给出的公式来计算一下padding为多少
在这里插入图片描述
其中padding为未知变量,dilation为默认值1,stride为默认值1,kernel_size为5
根据输入输出都为32可以求出,padding为2

所以我们的首层卷积为输入3通道,输出32通道,卷积核为5,padding为2

self.conv1 = nn.Conv2d(3, 32, kernel_size=5, padding=2)

其它层的推导同理,这里就不过多赘述

最终结果

import torch
import torchvision
from torch import nn
from torch.utils.tensorboard import SummaryWriterdataset = torchvision.datasets.CIFAR10('./dataset', train=False, download=True,transform=torchvision.transforms.ToTensor())dataLoader = torch.utils.data.DataLoader(dataset, batch_size=64)class Net(nn.Module):def __init__(self):super(Net, self).__init__()self.conv1 = nn.Conv2d(3, 32, kernel_size=5, padding=2)self.pool1 = nn.MaxPool2d(2)self.conv2 = nn.Conv2d(32, 32, kernel_size=5, padding=2)self.pool2 = nn.MaxPool2d(2)self.conv3 = nn.Conv2d(32, 64, kernel_size=5, padding=2)self.pool3 = nn.MaxPool2d(2)self.flatten = nn.Flatten()self.fc1 = nn.Linear(1024, 64)self.fc2 = nn.Linear(64, 10)def forward(self, x):x = self.conv1(x)x = self.pool1(x)x = self.conv2(x)x = self.pool2(x)x = self.conv3(x)x = self.pool3(x)x = self.flatten(x)x = self.fc1(x)x = self.fc2(x)return xnet = Net()
# print(net)
input_test = torch.ones((64, 3, 32, 32))  # torch.ones用于模拟数据,用于检验定义的每层操作是否有错误
output_test = net(input_test)
# print(output.shape)
writer = SummaryWriter('./logs')
writer.add_graph(net, input_test)       # 给定网络的类和输入的 input

这里新使用了torch.oneswriter.add_graph,根据注释再自己查看一下
在这里插入图片描述
add_graph生成的图像

这篇关于【Pytorch】10.CIFAR10模型搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/993036

相关文章

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

使用PyTorch实现手写数字识别功能

《使用PyTorch实现手写数字识别功能》在人工智能的世界里,计算机视觉是最具魅力的领域之一,通过PyTorch这一强大的深度学习框架,我们将在经典的MNIST数据集上,见证一个神经网络从零开始学会识... 目录当计算机学会“看”数字搭建开发环境MNIST数据集解析1. 认识手写数字数据库2. 数据预处理的

Pytorch微调BERT实现命名实体识别

《Pytorch微调BERT实现命名实体识别》命名实体识别(NER)是自然语言处理(NLP)中的一项关键任务,它涉及识别和分类文本中的关键实体,BERT是一种强大的语言表示模型,在各种NLP任务中显著... 目录环境准备加载预训练BERT模型准备数据集标记与对齐微调 BERT最后总结环境准备在继续之前,确

pytorch+torchvision+python版本对应及环境安装

《pytorch+torchvision+python版本对应及环境安装》本文主要介绍了pytorch+torchvision+python版本对应及环境安装,安装过程中需要注意Numpy版本的降级,... 目录一、版本对应二、安装命令(pip)1. 版本2. 安装全过程3. 命令相关解释参考文章一、版本对

使用DeepSeek搭建个人知识库(在笔记本电脑上)

《使用DeepSeek搭建个人知识库(在笔记本电脑上)》本文介绍了如何在笔记本电脑上使用DeepSeek和开源工具搭建个人知识库,通过安装DeepSeek和RAGFlow,并使用CherryStudi... 目录部署环境软件清单安装DeepSeek安装Cherry Studio安装RAGFlow设置知识库总

Linux搭建Mysql主从同步的教程

《Linux搭建Mysql主从同步的教程》:本文主要介绍Linux搭建Mysql主从同步的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux搭建mysql主从同步1.启动mysql服务2.修改Mysql主库配置文件/etc/my.cnf3.重启主库my

国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)

《国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)》本文给大家利用deepseek模型搭建私有知识问答库的详细步骤和遇到的问题及解决办法,感兴趣的朋友一起看看吧... 目录1. 第1步大家在安装完ollama后,需要到系统环境变量中添加两个变量2. 第3步 “在cmd中