神经网络-搭建小实战和Sequential的使用

CIFAR-10 model structure

在这里插入图片描述

通过已知参数(高、宽、dilation=1、kernel_size)推断stride和padding的大小

在这里插入图片描述

网络

import torch
from torch import nnclass Tudui(nn.Module):def __init__(self):super(Tudui, self).__init__()self.conv1 = nn.Conv2d(in_channels=3, out_channels=32, kernel_size=5, stride=1, padding=2)self.maxpool1 = nn.MaxPool2d(kernel_size=2)self.conv2 = nn.Conv2d(in_channels=32, out_channels=32, kernel_size=5, stride=1, padding=2)self.maxpool2 = nn.MaxPool2d(2)self.conv3 = nn.Conv2d(32, 64, 5,padding=2)self.maxpool3 = nn.MaxPool2d(2)self.flatten = nn.Flatten()self.linear1 = nn.Linear(1024, 64)self.linear2 = nn.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(input)
print(output.shape) # torch.Size([64, 10])

在这里插入图片描述

线性层如果不知道输入特征是多少,注释掉线性层,查看输入特征(这里是1024)

# x = self.linear1(x)
# x = self.linear2(x)

在这里插入图片描述

使用nn.Sequential

import torch
from torch import nnclass Tudui(nn.Module):def __init__(self):super(Tudui, self).__init__()self.model1 = nn.Sequential(nn.Conv2d(in_channels=3, out_channels=32, kernel_size=5, stride=1, padding=2),nn.MaxPool2d(kernel_size=2),nn.Conv2d(in_channels=32, out_channels=32, kernel_size=5, stride=1, padding=2),nn.MaxPool2d(2),nn.Conv2d(32, 64, 5, padding=2),nn.MaxPool2d(2),nn.Flatten(),nn.Linear(1024, 64),nn.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(input)
print(output.shape) # torch.Size([64, 10])

在这里插入图片描述

可视化模型结构

writer = SummaryWriter('logs_seq')
writer.add_graph(tudui, input)  # 将模型的计算图添加到TensorBoard中, 这可以帮助你可视化整个模型的结构, 包括各个层之间的连接关系
writer.close()

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据库系统概念】第7-14章集合

文章目录 第七章 数据库设计和E-R模型(重点!!!)~~7.1 设计过程概览(了解)~~7.1.1 设计阶段7.1.2 设计选择 7.2 实体-联系模型(重点掌握)7.2.1 实体集7.2.2 联系集联系集的…

C++性能优化- perf 和火焰图的安装使用

工欲善其事必先利其器,要想做Linux下的程序性能优化,就得先知道当前性能的瓶颈在哪里。 这里主要介绍一下常用的工具:perf工具和火焰图的使用方法 本文中的命令都是自己在Ubuntu18.04系统上测试可用的,在其他系统可能会需要不同的…

[4K80 AI ISP IPC芯片]

4K80 AI ISP IPC芯片 Hi3403V100是一颗面向监控市场推出的专业 Ultra-HD Smart IP Camera SOC,该芯片最高支持四路sensor输入,支持最高4K60的ISP图像处理能力,支持3F WDR加粗样式、多级降噪、六轴防抖、硬件拼接等多种图像增强和处理算法&am…

内核线程创建-kthread_create

文章参考Linux内核线程kernel thread详解 - 知乎 大概意思就是早期创建内核线程,是交由内核处理,由内核自己完成(感觉好像也不太对呢),创建一个内核线程比较麻烦,会导致内核阻塞。因此就诞生了工作队列以及…

从vue小白到高手,从一个内容管理网站开始实战开发第六天,登录功能后台功能设计--API项目中的登录实现(二),工厂模式创建数据库连接

一、回顾 在第五天的时候我们开始创建后台所以需项目,并创建项目所需要的相关实体类,具体内容没有掌握的小伙伴可以看点击下面的链接去学习。 从vue小白到高手,从一个内容管理网站开始实战开发第六天,登录功能后台功能设计--API项目中的登录实现(一)-CSDN博客文章浏览阅读…

Java:多线程和JUC详解

文章目录 1、实现多线程1.1 多线程概念1.2 并发和并行1.3 进程和线程1.4 多线程实现方式1.4.1 继承Thread类1.4.2 实现Runnable接口1.4.3 实现Callable接口1.4.4 三种实现方式的对比 1.5 设置和获取线程名称1.6 线程休眠1.7 线程优先级1.8 守护线程1.9 礼让线程1.10 插队线程 2…

Golang高质量编程与性能调优实战

1.1 简介 高质量:编写的代码能否达到正确可靠、简洁清晰的目标 各种边界条件是否考虑完备异常情况处理,稳定性保证易读易维护 编程原则 简单性 消除多余的重复性,以简单清晰的逻辑编写代码不理解的代码无法修复改进 可读性 代码是写给人看…

Docker 镜像以及镜像分层

Docker 镜像以及镜像分层 1 什么是镜像2 Docker镜像加载原理2.1 UnionFs:联合文件系统2.2 Docker镜像加载原理2.3 Docker镜像的特点 3 镜像的分层结构4 可写的容器层 1 什么是镜像 镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行…

虾皮怎么上架商品:如何在Shopee上上架商品?完整步骤指南

在虾皮(Shopee)平台上上架商品是一个相对简单的过程,但是对于新手卖家来说可能会感到有些困惑。不用担心,本文将为您提供一个完整的指南,详细介绍在Shopee上上架商品的步骤和注意事项。 先给大家推荐一款shopee知虾数据…

【Redis】Redis基础

文章目录 1. 概述2. Redis 安装及配置3. key 常用命令及10 大数据类型4. Redis 持久化4.1 RDB (Redis Database)4.2 AOF(Append Only File)4.3 RDB-AOF混合持久化4.4 纯缓存模式 5. Redis 事务6. Redis管道7. Redis 主从复制&…

数据结构之堆——学习笔记

1.堆的简介: 接下来看一下堆的建立; 接下来是如何在堆中插入数据以及删除数据: 大根堆的插入操作类似只是改变了一下大于和小于符号,同时插入操作的时间复杂度为O(logn)。 来看几个问题: 答案当…

从零开始C++精讲:第一篇——C++入门

文章目录 前言一、C关键字二、命名空间2.1引子2.2命名空间定义2.3命名空间的使用 三、C输入和输出3.1输出3.2输入 四、缺省参数4.1全缺省4.2半缺省 五、函数重载5.1重载概念 六、引用6.1定义6.2引用的使用示例6.2.1引用作参数6.2.1引用作返回值 6.3传值、传引用效率比较6.4常引…