【Pytorch】10.CIFAR10模型搭建

news2024/11/15 13:57:46

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 SummaryWriter

dataset = 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 x


net = 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生成的图像

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1679952.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

51单片机超声波测距_液位检测_温度检测原理图PCB仿真代码

目录 实物图: PCB ​原理图​ 仿真图 ​编辑 程序 资料下载地址:51单片机超声波测距-液位检测-温度检测原理图PCB仿真代码 主控为stc89c52,通过ds18b20进行温度采集,超声波测距,距离不可以超过1m,通过按键可以设…

揭秘未来工厂核心:智慧大屏引领可视化管理新潮流

在数字化浪潮席卷全球的今天,智慧工厂已不再是科幻小说中的概念,而是成为了现代工业发展的新引擎。 智慧工厂可视化大屏,不仅仅是一块显示屏,更是工厂运行的“大脑”。通过这块屏幕,我们可以实时掌握工厂的每一个角落、…

【Linux进程通信 —— 管道】

Linux进程通信 —— 管道 进程间通信介绍进程间通信的概念进程间通信的目的进程间通信的本质进程间通信的分类 管道什么是管道匿名管道匿名管道的原理pipe用fork来共享管道原理站在文件描述符角度-深度理解管道站在内核角度-管道本质管道读写规则管道的特点管道的四种特殊情况管…

shell脚本之sort,uniq,tr,cut,sphit,paste,ecal与正则表达式

sort命令 uniq命令 tr命令 cut命令 sphit命令 paste命令 ecal命令 正则表达式 sort命令 sort命令---以行为单位对文件内容进行排序,也可以根据不同的数据类型来排序 比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序…

C语言——预处理详解

目录 ​编辑 一、预定义符号 二、#define定义符号(常量) 三、define定义宏 四、带有副作⽤的宏参数 五、宏替换的规则 六、宏函数的对比 七、#和## 7.1 #运算符 7.2 ##运算符 八、命名约定 九、#undef 十、命令行定义 十一、条件编译 十二…

MP3解码入门(基于libhelix)

主要参考资料: 【Arduino Linux】基于 Helix 解码库实现 MP3 音频播放: https://blog.csdn.net/weixin_42258222/article/details/122640413 libhelix-mp3: https://github.com/ultraembedded/libhelix-mp3/tree/master 目录 一、MP3文件二、MP3 解码库三、libhelix-mp3库3.1 …

苹果新款 M4 芯片专注于 AI

爆炸性消息!苹果的新一代 M4 芯片来了!这家伙拥有 38 万亿次操作的超强神经引擎,速度比苹果 A11 芯片的 NPU 快 60 倍!虽然它的速度还没有达到 Snapdragon X Elite 的 45 TOPS,但苹果自夸 M4 将提供与最新 PC 芯片相同…

并发-sleep更优雅的实现方案:TimeUnit.枚举常量.sleep()

首先给出结论:线程使用中的暂停,建议优先使用TimeUnit类中的sleep()但需要注意传入时间小于0的异常情况TimeUnit是java.util.concurrent包下的一个类名主要功能是暂停线程的操作拥有与Thread.sleep()一样的功能都是暂停线程,但TimeUnit提供了…

TINA 使用教程

常用功能 分析-电气规则检查:短路,断路等分析- 直流分析 交流分析 瞬态分析 视图-分离曲线 由于输出的容性负载导致的振荡 增加5欧电阻后OK 横扫参数 添加横扫曲线的电阻,选择R3:8K-20K PWL和WAV文件的支持 示例一:…

基于微信小程序+JAVA Springboot 实现的【房屋租赁管理系统】app+后台管理系统 (内附设计LW + PPT+ 源码+ 演示视频 下载)

项目名称 项目名称: 基于微信小程序的房屋租赁管理系统 在本次项目开发中,我们成功构建了一款基于微信小程序的房屋租赁管理系统,旨在通过现代化信息技术提升房屋租赁服务的效率和质量。以下是对本项目的全面总结: 项目背景与目…

C语言学习【printf函数和scanf函数】

C语言学习【printf函数和scanf函数】 printf()函数和scanf()函数可以让用户与程序交流,是输入/输出函数 printf()函数 请求printf()函数打印数据的指令要与待打印数据的类型相匹配。例如,打印整数时使用%d,打印字符时使用%c。这些符号被称…

Invalid bound statement (not found) 六种解决方法

前五种参考博文: Invalid bound statement (not found) 五种解决方法-CSDN博客 第六种: 在启动类上加上MapperScan,指定扫描包

day08|字符串题目part01

相关题目: ● 344.反转字符串 ● 541. 反转字符串II ● 卡码网:54.替换数字 ● 151.翻转字符串里的单词 ● 卡码网:55.右旋转字符串 344.反转字符串—双指针的应用 力扣链接 思路:创建两个指针分别指向头部和尾部,首…

IP代理中的SOCKS5代理是什么?安全吗?

在互联网世界中,网络安全和个人隐私保护变得日益重要。SOCKS5代理作为一种安全高效的网络工具,不仅可以保护个人隐私安全,还可以提供更稳定、更快度的网络连接。本文将带大家深入了解SOCKS5代理在网络安全领域中的应用。 什么是SOCKS5代理 …

vue3.0+antdv的admin管理系统vue-admin-beautiful推荐

前言 几年前,笔者自学了vue这一优秀的前端框架,但苦于没项目练手,无意间发现了vue-admin-beautiful这一优秀的前端集成框架。当时就使用它做了一很有意思的小项目---终端监控云平台,实现了前端和后台的整体功能。整体方案介绍参见…

python:SunMoonTimeCalculator

# encoding: utf-8 # 版权所有 2024 ©涂聚文有限公司 # 许可信息查看: # 描述: https://github.com/Broham/suncalcPy # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2023.1 python 3.11 # Datetime : 2024/5/14 21:59 # User …

在抖音做电商,没有货源,不懂直播怎么办?分享一种解决方案!

大家好,我是电商糖果 糖果做电商的时间也挺久了,天猫,京东,闲鱼都搞过。 从学校进入社会工作,创业,一直都是围绕电商打转。 做的时间久了,好像只会做这一件事儿了。 2020年开始专攻抖音小店&…

大模型日报2024-05-15

大模型日报 2024-05-15 大模型资讯 OpenAI推出全新AI模型GPT-4o,具备文本、图像和音频处理能力 摘要: OpenAI公司继ChatGPT后,最新推出了名为GPT-4o的AI模型。这一模型不仅能够理解和生成文本,还新增了图像和音频的解释及生成功能。GPT-4o作为…

思科模拟器--2.静态路由和默认路由配置24.5.15

首先,创建三个路由器和两个个人电脑。 接着,配置两台电脑的IP,子网掩码和默认网关 对Router 0,进行以下命令: 对Router进行以下命令: 对Router2进行以下命令: 本实验完成。 验证:PC…

代码随想录训练营Day 29|力扣39. 组合总和、40.组合总和II、131.分割回文串

1.组合总和 题目链接/文章讲解: 代码随想录 视频讲解:带你学透回溯算法-组合总和(对应「leetcode」力扣题目:39.组合总和)| 回溯法精讲!_哔哩哔哩_bilibili 代码:(未剪枝版 &#xf…