神经网络实战1-Sequential

在这里插入图片描述
链接:https://pytorch.org/docs/1.8.1/generated/torch.nn.Sequential.html#torch.nn.Sequential
在这里插入图片描述
完成这样一个网络模型

第一步新建一个卷积层
self.conv1=Conv2d(3,32,5)#第一步将33232输出为32通道,卷积核5*5
注意一下:输出通道数等于卷积核个数,与输入通道数无关
在这里插入图片描述
注意shape式子中的dilation,代表内核元素之间的间距。默认值:1,dilation参数用于指定卷积核内部元素之间的间距。当dilation参数为0时,表示普通的卷积操作,即卷积核内部的元素是相邻的,没有间隔。区别主要体现在dilation参数大于1时,即空洞卷积(dilated convolution)的情况下,此时卷积核内的元素之间会有间隔,从而扩大了卷积核的感受野。。

当dilation参数为1时,也表示普通的卷积操作,即卷积核内部的元素是相邻的,没有间隔。
空洞卷积(dilated convolution)是一种卷积操作,通过在卷积核中插入间隔(洞)来增加感受野(receptive field),而不增加参数数量。相比于普通卷积,空洞卷积在保持参数量相对较小的情况下可以有效地扩大网络感受野。这种操作在处理具有大尺寸输入和大跨度特征的情况下特别有用。

奇数卷积核 直接用kernel_size // 2计算
在卷积神经网络中,卷积核的大小通常是一个正整数,例如3x3、5x5等。当卷积核的大小是奇数时,意味着卷积核的中心位置是准确地位于核的中心的一个单元的位置上。
使用奇数大小的卷积核有一些优点,其中之一是因为有一个确切的中心位置,可以更容易地确定卷积核是如何应用于输入图像的。此外,奇数大小的卷积核也有助于确保输出的特征图中的像素位置是对称分布的。
在一些情况下,为了方便地计算卷积核的填充(padding),可以利用奇数卷积核的特点直接使用 kernel_size // 2 这样的计算来确定卷积核中心相对于卷积核边缘的偏移量。这种方式常用于对称地填充卷积操作,以保持输入和输出的大小一致。
在这里插入图片描述
可以这样估算
也可以
奇数卷积核把中心格子对准图片第一个格子,卷积核在格子外有两层就padding=2,设置padding是为了提高边缘利用率
然后依次按图进行构造
构建一个网络
blog.csdnimg.cn/direct/23bfe9aab4364cd68eb9922ce5ee5c47.png)

import torch
from torch import nn
from torch.nn import Conv2d, MaxPool2d, Flatten, Linearclass Tudui(nn.Module):def __init__(self) -> None:super().__init__()self.conv1=Conv2d(3,32,5,padding=2)#第一步将3*32*32输出为32通道,卷积核5*5self.maxpool1=MaxPool2d(2)#池化核2x2self.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.linear=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.linear(x)x = self.linear2(x)return xtudui=Tudui()
print(tudui)#检验网络是否搭建成功了
input=torch.ones((64,3,32,32))
output=tudui(input)
print(output.shape)

Linear时自己算出来的,算不出的话

import torch
from torch import nn
from torch.nn import Conv2d, MaxPool2d, Flatten, Linearclass Tudui(nn.Module):def __init__(self) -> None:super().__init__()self.conv1=Conv2d(3,32,5,padding=2)#第一步将3*32*32输出为32通道,卷积核5*5self.maxpool1=MaxPool2d(2)#池化核2x2self.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()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.linear(x)# x = self.linear2(x)return xtudui=Tudui()
print(tudui)#检验网络是否搭建成功了
input=torch.ones((64,3,32,32))
output=tudui(input)
print(output.shape)

看一下output,在flatten后的输出是1024个

import torch
from torch import nn
from torch.nn import Conv2d, MaxPool2d, Flatten, Linear, Sequentialclass Tudui(nn.Module):def __init__(self) -> None:super().__init__()self.sequential=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.sequential(x)return xtudui=Tudui()
print(tudui)#检验网络是否搭建成功了
input=torch.ones((64,3,32,32))
output=tudui(input)
print(output.shape)

这是另一个写法可以看到这个 写法比上面优雅的多,输出也会更整齐
在这里插入图片描述
添加入tensorboard
在这里插入图片描述
可以看到网络结构
在这里插入图片描述
在这里插入图片描述
如此可以看到一些需要的参数

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

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

相关文章

JavaSE基础总结复习之面向对象の知识总结

目录 Java语言的基础特点 面向对象 类和对象 类 类的构造 一,发现类 二,发现类的共有属性(成员变量) 三,定义类的成员方法(行为,动词) 四,使用类创建对象 对象…

用TensorRT-LLM进行LLama的推理和部署

Deploy an AI Coding Assistant with NVIDIA TensorRT-LLM and NVIDIA Triton | NVIDIA Technical BlogQuick Start Guide — tensorrt_llm documentation (nvidia.github.io) 使用TensorRT-LLM的源码,来下载docker并在docker里编译TensorRT-LLM; 模型…

Eureka 服务注册与发现

目录 前言 注册中心 CAP 理论 常⻅的注册中心 CAP理论对比 Eureka 搭建 Eureka Server 引⼊ eureka-server 依赖 完善启动类 编写配置⽂件 启动服务 服务注册 引⼊ eureka-client 依赖 完善配置⽂件 启动服务 服务发现 引⼊依赖 完善配置⽂件 远程调⽤ 启动…

江协科技51单片机学习- p16 矩阵键盘

🚀write in front🚀 🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​…

web安全渗透测试十大常规项(一):web渗透测试之JAVA反序列化

渗透测试之PHP反序列化 1. Java反序列化1.1 Java安全-反序列化-原生序列化类函数1.1.1 原生序列化类函数:1.2 Java安全-SpringBoot框架-泄漏&CVE1. Java反序列化 1、序列化与反序列化 序列化:将内存中的对象压缩成字节流 反序列化:将字节流转化成内存中的对象2、为什么…

数据仓库和数据库有什么区别?

一、什么是数据仓库二、什么是数据库三、数据仓库和数据库有什么区别 一、什么是数据仓库 数据仓库(Data Warehouse)是一种专门用于存储和管理大量结构化数据的信息系统。它通过整合来自不同来源的数据,为企业提供统一、一致的数据视图&…

SuiNS发布子名及新命名标准,推动Web3身份结构的进步

SuiNS子名是Sui Name Service的强大扩展,最近与新命名标准一起发布。子名允许用户在一个主要的SuiNS名下创建额外的自定义身份,而无需额外费用。用户 gia 可以创建如 gaminggia 或 lendinggia 这样的子名,从而增强个人组织和支持群组与组织的…

通过Socket通信实现局域网下Amov无人机连接与数据传输

1.局域网下的通信 1.1 局域网 厂家提供的方式是通过Homer图数传工具(硬件)构建的amov局域网实现通信连接. 好处是通信距离足够长,支持150m;坏处是"局部",无法访问互联网. [IMAGE:…

AGV机器人的调度开发分析(1)- 内核中的路线规划

准备开始写一个系列,介绍下AGV机器人的调度的开发和应用。 按照openTCS的核心内容,国内多家广泛应用于AGV的调度。那么架构图如下: Kernel中有一个是Routing,这是路由规划模块,需要实现的细节功能包括如下&#xff1a…

SpringBoo+vue3+vite整合讯飞星火3.5通过webscoket实现聊天功能(前端代码)附带展示效果

访问地址: 天梦星服务平台 (tmxkj.top)https://tmxkj.top/#/site 后端文档: SpringBoovue3整合讯飞星火3.5通过webscoket实现聊天功能(全网首发)附带展示效果_springboot websocket vue3-CSDN博客https://blog.csdn.net/qq_53722…

2024 年值得推荐的 10 款 iPhone 数据恢复软件

iPhone 从来都不是一个简单的打电话电话。它就像一台微型电脑,让我们互相联系、拍照、拍视频、发邮件、看文档、看书。然而,随着它成为日常生活的必需品,我们总是容易因各种原因丢失数据,如删除、恢复出厂设置、iOS 错误、文件同步…

Django之云存储(二)

一、Django使用云存储 建立项目 django-admin startproject project_demo创建子应用 python manage.py startapp app_name修改配置文件,设置模板视图路径 settings.py TEMPLATES = [{BACKEND: django.template.backends.django.DjangoTemplates,DIRS: [os.path.join(BASE_DIR,…

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【13】压力压测JMeter-性能监控jvisualvm

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【13】压力压测JMeter-性能监控jvisualvm 压力测试概述性能指标 JMeter基本使用添加线程组添加 HTTP 请求添加监听器启动压测&查看分析结果JMeter Address Already in use 错误解决 性…

BFS:解决多源最短路问题

文章目录 什么是多源最短路问题?1.矩阵2.飞地的数量3.地图的最高点4.地图分析总结 什么是多源最短路问题? 多源最短路问题(Multi-Source Shortest Path Problem,MSSP)是图论中的一个经典问题,它的目标是在…

自动化办公04 使用pyecharts制图

目录 一、柱状图 二、折线图 三、饼图 四、地图 1. 中国地图 2. 世界地图 3. 省会地图 五、词云 Pyecharts是一个用于数据可视化的Python库。它基于Echarts库,可以通过Python代码生成各种类型的图表,如折线图、柱状图、饼图、散点图等。 Pyecha…

Spring-bean

Spring 网站:spring.io 两个方面: 简化开发: IoCAOP 框架整合: MyBatis SpringFrameWork系统架构(上层依赖下层) 解决问题(代码耦合度高——模块与模块之间的依赖程度) 目标&am…

HarmonyOS父子组件传递参数

HarmonyOS父子组件传递参数 1. 使用State和Prop进行父子组件传递———注意是单向同步 Prop装饰器:父子单向同步 注意:只支持单向同步,同时也只能支持string\number\boolean\enum比较简单的类型。 代码 // 使用 props 进行父子组件传值…

java.io.eofexception:ssl peer shut down incorrectly

可能是因为 1)https设置 2)超时设置 FeignConfig.java package zwf.service;import java.io.IOException; import java.io.InputStream; import java.security.KeyStore;import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocketFactory;import org.apac…

玄机平台流量特征分析-蚁剑流量分析

前言 蚁剑的流量特征 (1)每个请求体都存在ini_set(“display_errors”, “0”);set_time_limit(0)开头。并且后面存在base64等字符 (2)响应包的结果返回格式为: 随机数 响应内容 随机数 看一下题目要求 步骤1.1 这里要求我们找到木马的连接密码,…

如和完全免费快速访问外网?有亿点点不便利罢了

很鸡肋,但是可以试试 这个手机是真的可以使用谷歌的 不得不说有点意思,但肯定没啥用 地址跳转