6-pytorch-神经网络搭建

b站小土堆pytorch教程学习笔记

1.神经网络骨架搭建:Containers

官方文档代码:

import torch.nn as nn
import torch.nn.functional as Fclass Model(nn.Module):def __init__(self):super().__init__()self.conv1 = nn.Conv2d(1, 20, 5)self.conv2 = nn.Conv2d(20, 20, 5)def forward(self, x):x = F.relu(self.conv1(x))return F.relu(self.conv2(x))

在这里插入图片描述

import torch
from torch import nnclass A(nn.Module):def __init__(self):super().__init__()def forward(self,input):output=input+1return outputa=A()
x=torch.tensor(1.0)
output=a(x)
print(output)

tensor(2.)

2.向骨架中填充内容:

convolution layers
pooling layers
padding layers
Non-linear Activations (weighted sum, nonlinearity)
Normalization Layers

2.1卷积层

CLASS torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode=‘zeros’, device=None, dtype=None)

Parameters
in_channels (int) – Number of channels in the input image
out_channels (int) – Number of channels produced by the convolution
kernel_size (int or tuple) – Size of the convolving kernel
stride (int or tuple, optional) – Stride of the convolution. Default: 1
padding (int, tuple or str, optional) – Padding added to all four sides of the input. Default: 0
padding_mode (str, optional) – ‘zeros’, ‘reflect’, ‘replicate’ or ‘circular’. Default: ‘zeros’
dilation (int or tuple, optional) – Spacing between kernel elements. Default: 1
groups (int, optional) – Number of blocked connections from input channels to output channels. Default: 1
bias (bool, optional) – If True, adds a learnable bias to the output. Default: True

在这里插入图片描述

import torch
import torchvision
from torch import nn
from torch.nn import Conv2d
from torch.utils.data import DataLoaderdataset=torchvision.datasets.CIFAR10('./dataset',train=False,transform=torchvision.transforms.ToTensor(),download=True)
dataloader=DataLoader(dataset,batch_size=64)class Han(nn.Module):def __init__(self):super(Han, self).__init__()##首先完成父类的初始化self.conv1=Conv2d(in_channels=3,##定义卷积层,可在其他函数中调用out_channels=6,kernel_size=3,stride=1,padding=0)def forward(self,x):##定义一个forward函数x=self.conv1(x)return xhan=Han()
print(han)

Files already downloaded and verified
Han(
(conv1): Conv2d(3, 6, kernel_size=(3, 3), stride=(1, 1))
)

初始化的神经网络名字为Han,一个卷积层。

接下来对每张图像进行处理:

han=Han()
# print(han)
for data in dataloader:imgs,targets=dataprint(imgs.shape)#原图像的shapeoutput=han(imgs)#经过卷积print(output.shape)#后的图像shape

torch.Size([64, 3, 32, 32])
torch.Size([64, 6, 30, 30])

接下来使用tensorboard展示:

han=Han()
# print(han)
writer=SummaryWriter('logs')step=0
for data in dataloader:imgs,targets=dataprint(imgs.shape)#原图像的shape,torch.Size([64, 3, 32, 32])writer.add_images('input',imgs,step)output=han(imgs)#经过卷积print(output.shape)#后的图像shape.torch.Size([64, 6, 30, 30])#由于6通道无法显示,尝试reshape 6->3output=torch.reshape(output,(-1,3,30,30))writer.add_images('output',output,step)step=step+1

> tensorboard --logdir=logs
在这里插入图片描述

2.2 最大池化

CLASStorch.nn.MaxPool2d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)

Parameters
kernel_size (Union[int, Tuple[int, int]]) – the size of the window to take a max over
stride (Union[int, Tuple[int, int]]) – the stride of the window. Default value is kernel_size
padding (Union[int, Tuple[int, int]]) – Implicit negative infinity padding to be added on both sides
dilation (Union[int, Tuple[int, int]]) – a parameter that controls the stride of elements in the window
return_indices (bool) – if True, will return the max indices along with the outputs. Useful for torch.nn.MaxUnpool2d later
ceil_mode (bool) – when True, will use ceil instead of floor to compute the output shape

在这里插入图片描述
相关代码同卷积层:
在这里插入图片描述
最大池化一般只需要设置kernel_size,移动步长默认为kernel_size
ceil_mode为True时,表示边缘部分最大池化结果是否舍去
最大池化希望保留输入特征,但减少计算量

2.3非线性激活

CLASS torch.nn.ReLU(inplace=False)

import torch
from torch import nn
from torch.nn import ReLUinput=torch.tensor([[1,-0.5],[-1,3]])
output=torch.reshape(input,(-1,1,2,2))
# print(output.shape)class Han(nn.Module):def __init__(self):super(Han, self).__init__()self.relu1=ReLU(inplace=False)def forward(self, input):output=self.relu1(input)return outputhan=Han()
output=han(input)
print(output)

tensor([[1., 0.],
[0., 3.]])

查看sigmoid对图片影响:

han=Han()
# output=han(input)
# print(output)
writer=SummaryWriter('logs')
step=0
for data in dataloader:imgs,targets=datawriter.add_images('input_sigmoid',imgs,step)output=han(imgs)writer.add_images('output_sigmoid',output,step)step+=1writer.close()

在这里插入图片描述
非线性层向网络引入非线性特征,非线性越多才能训练出符合各种特征的模型。

2.4线性层及其他层

在这里插入图片描述
线性层:

import torch
import torchvision.datasets
from torch import nn
from torch.nn import Linear
from torch.utils.data import DataLoaderdataset=torchvision.datasets.CIFAR10('dataset',train=False,transform=torchvision.transforms.ToTensor())
dataloader=DataLoader(dataset,batch_size=64)class Han(nn.Module):def __init__(self):super(Han, self).__init__()self.linear1=Linear(196608,10)def forward(self,input):output=self.linear1(input)return outputhan=Han()for data in dataloader:imgs,targets=dataprint(imgs.shape)#原始图片torch.Size([64, 3, 32, 32])# output=torch.reshape(imgs,(1,1,1,-1))output=torch.flatten(imgs)#torch.Size([196608])print(output.shape)#展平后torch.Size([1, 1, 1, 196608])->torch.Size([10])output=han(output)print(output.shape)#经过线性层后torch.Size([1, 1, 1, 10])
2.5 已有网络模型

图像方面:
在这里插入图片描述

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

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

相关文章

“TypeError: utils request jS WEBPACK IMPORTED MODULE O .default is undefined‘报错

写项目时报下列错误,找了半天,结果才发现自己在request.js中少写了一行代码 一定不要少些代码 export default requestrequest.js完整代码 import axios from axios;//创建一个新的axios对象 const request axios.create({baseURL:http://localhost:…

C++ 二分法

目录 1、704. 二分查找 2、34. 在排序数组中查找元素的第一个和最后一个位置 3、69. x的平方根 4、35. 搜索插入位置 5、852. 山脉数组的峰顶索引 6、162. 寻找峰值 7、153. 寻找旋转排序数组中的最小值 8、LCR 173. 点名 1、704. 二分查找 ​ class Solution {…

C++入门2

目录 前言: 引用 引用特性: 常引用: 使用场景: 1. 做参数 2. 做返回值 3.引用做返回值(方便读写返回变量) 传值、传引用效率比较: 引用和指针的区别: 内联函数 auto关键字(C11) auto的使用细则&#xff1a…

访问raw.githubusercontent.com失败问题的处理

1 问题 GitHub上的项目的有些资源是放在raw.githubusercontent.com上的,通常我们在安装某些软件的时候会从该地址下载资源,直接访问的话经常容易失败。 # 安装operator kubectl apply -f https://raw.githubusercontent.com/oceanbase/ob-operator/2.1…

R3F(React Three Fiber)经验篇

之前一直在做ThreeJS方向,整理了两篇R3F(React Three Fiber)的文档,这是经验篇,如果您的业务场景需要使用R3F,可以参考一下这个文档。下面是目录,按照需求自取。 基础篇 ⬇️ R3F(…

Android 内存优化内存泄漏处理

一:匿名内部类/非静态内部类 匿名内部类的泄漏原因:匿名内部类会隐式地持有外部类的引用.当外部类被销毁时,内部类并不会自动销毁,因为内部类并不是外部类的成员变量, 它们只是在外部类的作用域内创建的对象,所以内部…

力扣细节题:翻转二叉树

细节一:递归采用前序递归 细节二:采用交换节点而不是交换数据因为左右树交换的同时左右树的所有子节点都要交换 细节三:采用外置函数因为return如果在本函数内操作会存在必须返回空指针的问题 /*** Definition for a binary tree node.* s…

01_02_mysql09_MySQL的数据目录

MySQL的数据目录 学习再总结宋红康老师课程内容1.MySQL8的主要目录结构 安装好MySQL8之后,查看如下的目录结构 find / -name mysql1.1数据库文件的存放路径 MySQL数据库文件的存放路径:/var/lib/mysql/ 1.2相关命令目录 相关命令目录:/u…

番外篇 | YOLOv5+DeepSort实现行人目标跟踪检测

前言:Hello大家好,我是小哥谈。DeepSort是一种用于目标跟踪的深度学习算法。它结合了目标检测和目标跟踪的技术,能够在视频中准确地跟踪多个目标,并为每个目标分配一个唯一的ID。DeepSort的核心思想是将目标检测和目标跟踪两个任务进行联合训练,以提高跟踪的准确性和稳定性…

创建vue3项目(基础)

首先打开自己的目录文件输入指令cmd 出现命令行工具 输入指令vue create 项目名称 按回车 选择第三个自己配置 根据需求选择 回车 选择自己需要的版本 出现这个 一直按回车大约5下或者6下 创建完毕 结束 感谢观看

Spring 中的AOP 以及与 AspectJ AOP 的区别

AOP到底是什么,有什么作用: AOP(Aspect-Oriented Programming,面向切面编程): 能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等&…

【EAI 024】RoboVQA: Multimodal Long-Horizon Reasoning for Robotics

Paper Card 论文标题:RoboVQA: Multimodal Long-Horizon Reasoning for Robotics 论文作者:Pierre Sermanet, Tianli Ding, Jeffrey Zhao, et.al. 作者单位:Stanford University, UC Berkeley, Meta 论文原文:https://arxiv.org/a…

【Linux】部署单机项目(自动化启动)---(图文并茂详细讲解)

目录 一 准备工作 1.1 连接服务器拷贝文件 1.2 解压 二 JDK安装 2.1 配置坏境变量 2.2 查看版本 三 Tomcat(自启动) 3.1 复制启动命令的位置 3.2 添加命令相关配置文件 3.2.1 配置jdk及tomcat目录 3.2.2 添加优先级 3.3 设置自启动命令 3.4 开放端口 四 My…

3_怎么看原理图之协议类接口之I2C笔记

I2C只连接I2CSCL与I2CSDA两根线,即2线制异步串行总线。 I2CSCL与I2CSDA两根线需要上拉电阻,目的是让电平有确定的状态。 发完8bit数据后,第9个电平拉低SDA为低电平。 比如传一个数据A0x410100 0001 IIC总线有多个从机设备的通信&#xff0c…

Spring Boot 笔记 025 主界面

1.1 路由搭建 1.1.1 安装vue router npm install vue-router4 1.1.2 在src/router/index.js中创建路由器,并导出 import { createRouter, createWebHistory } from vue-router//导入组件 import LoginVue from /views/Login.vue import LayoutVue from /views/La…

Aidex移动端项目入门

运行效果 项目源码下载 若依-ruoyi-AiDex-Uniapp: 若依-Ruoyi APP 移动解决方案,基于uniappuView封装的一套基础模版,开箱即用,免费开源,一份代码多终端适配,支持H5、支付宝小程序、微信小程序、APP,实现了…

改进Yolov5目标检测与单目测距 yolo速度测量-pyqt界面-yolo添加注意力机制

当设计一个结合了 YOLOv5 目标检测、单目测距与速度测量以及 PyQt 界面的毕业设计时,需要考虑以下几个方面的具体细节: 计算机视觉、图像处理、毕业辅导、作业帮助、代码获取,私聊会回复! YOLOv5 目标检测: 首先,选择…

B树的介绍

R-B Tree 简介特性B树特性m阶B树的性质(这些性质是B树规定的) B树的搜索B树的添加B树的删除——非叶子结点 简介 R-B Tree又称为Red-Black Tree,红黑树。是一种特殊的二叉查找树,红黑树的每个节点上都有存储为表示结点的颜色&…

Camunda7.18流程引擎启动出现Table ‘camunda_platform_docker.ACT_GE_PROPERTY‘的解决方案

文章目录 1、问题描述2、原因分析3、解决方案3.1、方案一:降低mysql版本3.2、方案二:增加nullCatalogMeansCurrent参数(推荐) 4、总结 1、问题描述 需要在docker中,部署Camunda流程引擎。通过启动脚本camunda-platfor…

分布式架构(分布式ID+分布式事务)

分布式架构 分布式事务产生的场景: 跨JVM进程产生的分布式事务 单体系统访问多个数据库实例 多服务访问同一个数据库实例 CAP理论 C:一致性,指写操作后的读操作可以读取到最新的数据状态,当数据分布在多个节点上&#xff0…