【Pytorch】搭建网络模型的实战

【Pytorch】搭建网络模型的实战

    • CIFAR10 model structure
    • 搭建网络
    • 使用Sequential进行搭建网络模型
    • 使用tensorboard查看网络结构

对CIFAR10数据集进行分类,根据图片内容识别这是哪一类

CIFAR10 model structure

在这里插入图片描述

  • 输入input:3通道的32 x 32 图片
  • 卷积操作的通道数不变 那是因为经过了padding操作
  • 最大池化 不改变channel数
  • 输出是一个一维向量 十种类别

搭建网络

第一次卷积操作之后,图片大小不变,经过了padding操作 padding = 2
在这里插入图片描述

from torch import nn
from  torch.nn import Conv2d,MaxPool2d,Flatten,Linear

class Tudui(nn.Module):
    def __init__(self):
        super(Tudui,self).__init__()

        #  第一层 卷积层  填充操作 保证图片大小不变
        self.conv1 = Conv2d(3,32,5,padding = 5)

        #  最大池化 操作
        self.maxpool1 = MaxPool2d(2)

        # 第二层卷积  通道数不变
        self.conv2 = Conv2d(32,32,5,padding=2)

        #  x最大池化 操作
        self.maxpool2 = MaxPool2d(2)

        #  第三层卷积操作
        self.conv3 = Conv2d(32,64,5,padding=2)

        # 最大池化操作
        self.maxpool3 = MaxPool2d(2)

        # 将数据进行展平 64 * 4 * 4 = 1024 一维向量

        # 64 x 1024  这里的64是batch_size
        self.flatten = Flatten()


        #  将展平之后的向量 输入全连接层

        # 输入1024  输出64
        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 x
    
tudui = Tudui()

print(tudui)

input  = torch.ones((64,3,32,32))
output = tudui.forward(input)

print(output.shape)
    

使用Sequential进行搭建网络模型

将上面的代码使用sequential进行置换

from torch import nn
from  torch.nn import Conv2d,MaxPool2d,Flatten,Linear,Sequential
import torch

class Tudui(nn.Module):
    def __init__(self):
        super(Tudui,self).__init__()

        # #  第一层 卷积层  填充操作 保证图片大小不变
        # self.conv1 = Conv2d(3,32,5,padding = 5)

        # #  最大池化 操作
        # self.maxpool1 = MaxPool2d(2)

        # # 第二层卷积  通道数不变
        # self.conv2 = Conv2d(32,32,5,padding=2)

        # #  x最大池化 操作
        # self.maxpool2 = MaxPool2d(2)

        # #  第三层卷积操作
        # self.conv3 = Conv2d(32,64,5,padding=2)

        # # 最大池化操作
        # self.maxpool3 = MaxPool2d(2)

        # # 将数据进行展平 64 * 4 * 4 = 1024 一维向量

        # # 64 x 1024  这里的64是batch_size
        # self.flatten = Flatten()


        # #  将展平之后的向量 输入全连接层

        # # 输入1024  输出64
        # self.linear1 = Linear(1024,64)
        # self.linear2 = Linear(64,10)


        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.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)
        x = self.model1(x)

        return x
    
tudui = Tudui()
print(tudui)

input  = torch.ones((64,3,32,32))
output = tudui.forward(input)
print(output.shape)

使用tensorboard查看网络结构

在这里插入图片描述

from torch import nn
# from tensorboardX import SummaryWriter
from  torch.nn import Conv2d,MaxPool2d,Flatten,Linear,Sequential
import torch

from torch.utils.tensorboard import SummaryWriter

class Tudui(nn.Module):
    def __init__(self):
        super(Tudui,self).__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 x
    
tudui = Tudui()

print(tudui)

input  = torch.ones((64,3,32,32))
output = tudui.forward(input)


#  输出是 64 x 10 64代表batch_size
print(output.shape)

writer = SummaryWriter("../logs_seq")
writer.add_graph(tudui,input)
writer.close()

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

应用信息资源管理(张士玉、董焱)——第一章 总论

第一章 总论 1.1 信息社会 1.1.1 信息社会的形成 信息社会是指以信息技术为基础,信息产业为支撑,信息化为主要特征的社会形态。其形成经历了以下几个阶段: 信息化初期:20世纪60年代至70年代,电子计算机的出现和发展…

人工智能会取代人工翻译吗?

当今社会正处于语言和技术高速发展的阶段,因此语言和技术的碰撞是不可避免的——甚至有些人说这种碰撞已经发生了,我们只是在等待尘埃落定。数字化、物联网、人工智能和机器学习,以及更进一步——智能手机、语音识别,以及互联网和…

机器视觉检测技术在工业零部件的应用

众所周知,在工业生产中,传统的检测技术需要大量的检测工作者,不仅影响生产效率,而且带来不可靠的因素。 视觉检测技术克服了传统检测技术的缺点,确保了检测的安全性。 可靠性和自动化程度高,已成为当前检测…

第六章 信息资源安全管理

信息资源安全管理内涵 信息在开发利用过程中面临的问题: 可用性;合法用户对信息的使用不会被不正当拒绝保密性也称机密性;保证机密信息不被窃取,或窃取者不能了解信息的真实含义认证性也称真实性;对信息的来源进行判断…

zabbix创建自定义监控模板

目录 第一章先行配置zabbix 第二章配置自定义 2.1.案列:自定义监控客户端服务器登录的人数需求:限制登录人数不超过 3 个,超过 3 个就发出报警信息 2.2.在 Web 页面创建自定义监控项模板 2.3.zabbix 自动发现与自动注册 总结 自定义监控…

Chat-GLM 详细部署(GPU显存>=12GB)

建议配置: ( Windows OS 11 部署 )CPU-i7 13700F ~ 13700KF RAM: 16GB DDR4 GPU: RTX3080(12G) 安装 conda: 1. 下载安装 miniconda3 : https://docs.conda.io/en/latest/miniconda.html conda是一个包和环境管理工具,它不仅能管理包,还能隔…

龙蜥 Anolis 8.x + Vmware的安装与网络配置 CentOS8 网络配置详细教程

前言 配置和安装可以看下面这两篇文章的 写的很详细https://cnxiaobai.com/articles/2021/04/21/1619011285612.htmlhttps://cnxiaobai.com/articles/2021/10/21/1634800698273.html#b3_solo_h3_1网络配置方面有不同的方面 我在下面进行了修改这个操作系统 很少资源 弄了好久才…

C++轻量级Web服务器TinyWebServer源码分析之threadpool篇

文章目录threadpool线程池篇简介一、线程池的创建与回收二、向请求队列添加请求任务三、worker函数内部访问run函数,完成线程处理四、run函数执行任务原文链接threadpool线程池篇简介 空间换时间,浪费服务器的硬件资源,换取运行效率. 池是一组资源的集合,这组资源…

天气预报查询 API + AI 等于王炸(一大波你未曾设想的天气预报查询 API 应用场景更新了)

前言 近年来,随着信息化进程的不断深入,人们对于信息的获取和处理需求越来越高。而其中,天气查询API是一个非常重要的服务,它能够帮助人们快速获取所在位置的天气情况,同时也为各类应用提供了必要的气象数据支持。 本…

vue3笔记

目录 1.vue3带来了什么 1.1源码的升级 1.2拥抱TypeScript 1.3新的特性 2.创建Vue3.0工程 2.1使用vue-cli创建 2.2使用vite创建 3.创建vue3.0工程 3.1 main.js 3.2 App.vue 4.安装开发者工具 5.常用的 Composition API 5.1拉开序幕的setup 6.ref函数 7.reactive函…

全国青少年软件编程(Scratch)等级考试二级考试真题2023年3月——持续更新.....

一、单选题(共25题,共50分) 1. 小猫的程序如图所示,积木块的颜色与球的颜色一致。点击绿旗执行程序后,下列说法正确的是?( ) A.小猫一直在左右移动,嘴里一直说着“抓到了”。 B.小猫会碰到球,然后停止。 C.小猫一直在左右移动,嘴里一直说着“别跑” D.小猫会碰到球,…

全新适配鸿蒙生态,Cocos引擎助力3D应用开发

一、适配HarmonyOS背景 HarmonyOS 3.1版本自发布以来,备受广大开发者的好评,同时也吸引了鸿蒙生态众多伙伴的青睐。 鸿蒙生态所强调的智慧全场景、多端联动与跨设备流转等能力,与Cocos所具有的跨平台、低功耗、高性能三大核心特点不谋而合。C…

【Python】字符串 ④ ( Python 浮点数精度控制 | 控制数字的宽度和精度 )

文章目录一、Python 字符串格式化1、浮点数精度问题2、浮点数精度控制一、Python 字符串格式化 1、浮点数精度问题 在上一篇博客 【Python】字符串 ③ ( Python 字符串格式化 | 单个占位符 | 多个占位符 | 不同类型的占位符 ) 中 , 拼接字符串中 , float 浮点类型出现如下情况 …

国内怎么玩chatGPT-chatGPT中文版入口

ChatGPT国内可用版 目前,国内有一些可用的ChatGPT模型和平台,可以方便用户使用。以下是一些代表性的中文ChatGPT模型和平台: THU Transformer: 清华大学自然语言处理实验室开发的中文自然语言处理模型,基于GPT模型架构进行研发&a…

WPS卡慢解决方法

WPS卡顿,很慢怎么解决? keywords:wps很卡很慢怎么办、wps很卡什么原因、wps很卡怎么解决、wps很占内存吗、wps很慢、wps打开文件很慢很卡怎么办、wps打开文件很慢很卡 说起来真的很搞笑,你可以试试把下面这个功能给勾选,速度X10…

ChatGPT大规模封锁亚洲地区账号

我是卢松松,点点上面的头像,欢迎关注我哦! 在毫无征兆的情况下,从3月31日开始OpenAI大规模封号,而且主要集中在亚洲地区,特别是ip地址在台湾、日本、香港三地的,命中率目测40%。新注册的账号、…

KMP算法详解

目录 KMP算法的介绍 详解KMP算法 next数组的填充 代码实现 KMP算法的介绍 KMP算法是解决字符串匹配问题的一个经典算法,字符串匹配问题就是查找子串T是否在主串S中存在,其中在KMP算法中,主串也被称为目标串,子串也被称为模式…

图片转pdf无水印版怎么转换?快收藏这三种免费转换方法!

图片转pdf无水印版怎么转换?在日常生活中,为了节省批量图片发送的时间,我们通常会将多张图片转换成PDF文件格式文档,然后发送给他人。 目前在市场上有很多软件可以将图片转PDF。你想知道哪个软件可以将图片转PDF没有水印吗&#…

Java命令行参数

目录 一、引入依赖 二、方法实战 三、方法讲解 本文我们介绍一个命令行工具,Apache Commons CLI。 在我们执行java的jar包时,常用的命令是 java -jar hellowork.jar # 或者 nohup java -jar hellowork.jar >>/data/log.txt2>&1 & …

这6个超好用的免费图片素材网站,赶紧收藏~

6个高质量图片素材网站,免费可商用,记得收藏! 1、菜鸟图库 https://www.sucai999.com/pic.html?vNTYxMjky 菜鸟图库是我推荐过很多次的一个设计素材网站,除了设计类,还有很多自媒体可以用到的素材,比如高…