1. 神经网络 卷积操作

    例子:

    输入:二维图像

    [1,2,0,3,1]

    [0,1,2,3,1]

    [1,2,1,0,0]

    [5,2,3,1,1]

    [2,1,0,1,1]

    卷积核:

    [1,2,1]

    [0,1,0]

    [2,1,0]

    然后需要将输入图像和卷积核转化为4维张量

    为什么转为4维张量?因为卷积操作需要输入图像和卷积核的维度相同,所以需要将其转化为相同的维度。

    (插入 channel:彩色图像就是rgb为3 灰度图像就是1)

    下面进行二维卷积操作:

    1. 步长为1 就是每次移动一步

      stride = 1

    2. 步长为2 就是每次移动两步

    3. 填充为1

      padding = 1

      达到填充后的输出和输入的大小相同 都是5x5

      为了充分学习边缘信息 提取边缘特征

    4. 上述输出

      在这里插入图片描述

    code:

    import torch
    import torch.nn.functional as F#原始输入图像
    input = torch.tensor([[1,2,0,3,1],[0,1,2,3,1],[1,2,1,0,0],[5,2,3,1,1],[2,1,0,1,1]])
    #卷积核
    kernel = torch.tensor([[1,2,1],[0,1,0],[2,1,0]])
    #将输入图像和卷积核转化为4维张量 reshape(batch_size, channel, height, width)
    #为什么转为4维张量?因为卷积操作需要输入图像和卷积核的维度相同,所以需要将其转化为相同的维度
    input = torch.reshape(input,(1,1,5,5))
    kernel = torch.reshape(kernel,(1,1,3,3))#二维卷积
    #stride=1 表示步长为1
    output = F.conv2d(input,kernel,stride=1)
    print(output)#步长为2
    output = F.conv2d(input,kernel,stride=2)
    print(output)#填充为1
    #填充后输出的大小和输入相同
    #就是卷积的时候在原输入的周围补0 上下左右补0
    #padding 也是为了充分利用边缘信息 提取边缘特征
    output = F.conv2d(input,kernel,stride=1,padding=1)
    print(output)
    
  2. 神经网络 卷积层

    作用:提取特征

    流程:

    1. 选取数据集

      这里我用的是自定义的数据集 还是放一下目录结构

      数据集在images下 注意DataLoader加载数据集需要的目录结构是datasets/classes 需要注意下

      在这里插入图片描述

    2. 数据预处理

      主要是使用transforms工具箱

      这里我先统一大小

      转成Tensor格式

      标准化

      #数据预处理
      transform = transforms.Compose([transforms.Resize((224,224)),transforms.ToTensor(),transforms.Normalize(mean = [0.5,0.5,0.5],std = [0.5,0.5,0.5])
      ])
      
    3. 加载数据集

      ImageFloder()的时候应用transform

      batch_size是指一次取出多少图片来处理(2的倍数)

      folder_path = '../images'
      dataset = ImageFolder(folder_path,transform=transform)
      dataloader = DataLoader(dataset,batch_size=1)
      
    4. 构建卷积层

      这里的in_channels为3(彩色图片)out_channels为6(说明应该是应用了两个卷积核去卷积操作 会产生两个输出 所以最后的output的数量是input的两倍)kernel_size=3 卷积核设置的3x3的

      然后前向传播 输出结果

      class convNet(nn.Module):def __init__(self):#调用父类nn.Module的构造函数super(convNet,self).__init__()self.conv1 = Conv2d(in_channels=3,out_channels=6,kernel_size=3,stride=1,padding=0)def forward(self,x):x = self.conv1(x)return xconvnet = convNet()
      
    5. 使用tensorboard观察结果

      日志存在logs文件夹下

      writer = SummaryWriter('../logs')
      ...
      ...
      ...
      writer.close()
      
       writer.add_images('input',img,cnt)writer.add_images('output',output,cnt)
      
    6. 开始遍历处理加载的图片(见后面完整代码中)

      output = torch.reshape(output,(-1,3,222,222))
      

      这一个操作是因为output的通道数是6 运行会报错 这里就给他强制性转换一下shape

      输入通道数变成几不知道 就填写-1

      (222,222)这个是怎么得到的?

      print(output.shape)得到的

    7. tensorboard结果:

      tensorboard --logdir=../logs
      

      (我数据集中就放了一张图片哈哈哈哈哈 大家能够认出是谁吗)

      在这里插入图片描述

      (笑死我了 这里是变形的小苏苏)

    8. 完整代码

      code:

      import torch
      import torchvision
      from torch import nn
      from torch.nn import Conv2d
      from torch.utils.data import DataLoader
      from torch.utils.tensorboard import SummaryWriter
      from torchvision.datasets import ImageFolder
      from torchvision import transforms#数据预处理
      transform = transforms.Compose([transforms.Resize((224,224)),transforms.ToTensor(),transforms.Normalize(mean = [0.5,0.5,0.5],std = [0.5,0.5,0.5])
      ])#加载数据集
      folder_path = '../images'
      dataset = ImageFolder(folder_path,transform=transform)
      dataloader = DataLoader(dataset,batch_size=1)class convNet(nn.Module):def __init__(self):#调用父类nn.Module的构造函数super(convNet,self).__init__()self.conv1 = Conv2d(in_channels=3,out_channels=6,kernel_size=3,stride=1,padding=0)def forward(self,x):x = self.conv1(x)return xconvnet = convNet()writer = SummaryWriter('../logs')cnt = 0
      for data in dataloader:img,label = dataprint(img.shape)output = convnet(img)print(output.shape)writer.add_images('input',img,cnt)output = torch.reshape(output,(-1,3,222,222))writer.add_images('output',output,cnt)cnt = cnt + 1writer.close()
      

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

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

相关文章

2.4 组件间通信Props(父传子)

父组件 在父组件模板上的子组件上加上属性值&#xff0c;属性值就是想要传递给子组件的信息。 例如&#xff1a; <template> <div class"Big-box"><testBox :personList"p"></testBox> </div> </template>子组件 子组…

从零开始学习 Redux:React Native 项目中的状态管理

Redux 是一个用于 JavaScript 应用程序的状态管理库&#xff0c;通常与 React 或 React Native 配合使用&#xff0c;帮助管理应用的状态和数据流。其核心原理是通过集中式的“单一数据源”来管理应用状态&#xff0c;避免组件之间的“层层传递”状态和副作用。 Redux 的原理单…

[特殊字符] CentOS 7 离线安装 MySQL 5.7 实验

&#x1f427; CentOS 7 离线安装 MySQL 5.7 实验 针对企业无互联网环境的系统&#xff0c;设计了如何在 CentOS 7 系统中&#xff0c;使用一台可以联网的主机&#xff08;NodeA&#xff09;为另一台无法联网的主机&#xff08;NodeB&#xff09;安装 MySQL 5.7 数据库及其依赖…

Redis 概率型数据结构实战指南

1. 为什么要用「近似」&#xff1f; 随着业务量爆发式增长&#xff0c;精确统计 的内存或 CPU 成本可能难以接受。例如&#xff1a; 统计一天内 唯一 IP 数 —— 用 SET 精确去重&#xff0c;百万 IP→占用数百 MB。统计海量商品销量、实时计算 P99 延迟、获取 TOP-N 热门页面……

Android开发工程师:Linux一条find grep命令通关搜索内容与文件

find . -type f \( -name "*.java" -o -name "*.xml" \) -not -path "./out/*" -exec grep -irnE activity|class {} 多关键词搜索&#xff1a;使用正则表达式 pattern1|pattern2 同时搜索多个关键词&#xff08;如 activity|class&#xff09;单…

深入理解浏览器解析机制和XSS向量编码

URL 编码 "javascript:alert(1)"---->%6a%61%76%61%73%63%72%69%70%74:%61%6c%65%72%74%28%31%29<a href"%6a%61%76%61%73%63%72%69%70%74:%61%6c%65%72%74%28%31%29">aaa</a>-------浏览器解析不了。 页面识别在url解码之前&#xff0c;在…

ThinkPHP8极简上手指南:开启高效开发之旅

目录一、环境搭建1.1 安装 PHP1.2 安装 Composer二、安装 ThinkPHP8三、目录结构解析四、第一个简单示例&#xff1a;Hello, ThinkPHP84.1 创建控制器4.2 编写控制器方法4.3 配置路由4.4 访问测试五、进阶示例&#xff1a;数据库查询5.1 配置数据库连接5.2 创建模型5.3 编写查询…

智能制造之物料详解

在制造业业务系统中&#xff0c;物料流转贯穿“需求→采购→入库→生产→成品→交付”全流程&#xff0c;各系统通过数据协同实现物料状态、位置、数量的精准追踪。以下按流转阶段拆解&#xff1a;一、需求发起与计划阶段&#xff08;CRM/ERP/PLM主导&#xff09;1. 需求源头…

Qt的安装和环境配置

QT开发环境的搭建&#xff0c;需要安装3个部分&#xff0c;C编译器、Qt SDK(SDK是软件开发工具包)、QT的集成开发环境(IDE)Qt的3种集成开发环境&#xff1a;Qt Creator&#xff1a;是由Qt官方提供的&#xff0c;容易上手&#xff0c;不需要额外的配置&#xff0c;但是有一些bug…

解析MCUboot的实现原理和Image结构

目录 概述 1 MCUboot的功能 1.1 代码包结构 1.2 限制 2 MCUboot Image 2.1 Image格式 2.2 Flash Map 2.3 Image 槽 2.4 使用scratch交换 2.5 Image 尾部数据结构 3 交换区 3.1 单交换区 3.2 Multiple Image boot 3.3 Image交换 4 交换状态&#xff08;swap statu…

YOLOv8目标检测项目代码详解与习题

YOLOv8目标检测项目代码详解与习题一、项目代码详解该代码是基于 YOLOv8 和 OpenCV 实现的图像目标检测项目&#xff0c;核心功能是加载预训练的 YOLOv8 模型&#xff0c;对指定图像进行目标检测&#xff0c;然后可视化检测结果并保存或显示。以下是逐行解析&#xff1a;# -*- …

gradle关于dependency-management的使用

1、相关文档Spring官方文档&#xff1a;https://docs.spring.io/dependency-management-plugin/docs/current-SNAPSHOT/reference/html/#introduction仓库版本查看&#xff1a;https://mvnrepository.com/artifact/io.spring.gradle/dependency-management-plugin/1.0.15.RELEA…

Java SpringBoot 对接FreeSwitch

1.增加Maven依赖<dependency><groupId>org.freeswitch.esl.client</groupId><artifactId>org.freeswitch.esl.client</artifactId><version>0.9.2</version></dependency><!-- XML-RPC --><dependency><groupI…

限流算法与实现

费曼学习法学习限流算法为什么要限流mysql插入600次/秒超过这个阈值&#xff0c;要么使用mysql集群、要么限流&#xff0c;防止宕机有哪些算法固定窗口就是个计数器&#xff0c;一秒内超过阈值&#xff0c;不允许访问缺点&#xff1a;不均匀&#xff0c;跨越临界点的一秒内&…

Android本地浏览PDF(Android PDF.js 简要学习手册)

环境 Min SDK: 21 依赖&#xff1a; implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1" implementation "androidx.webkit:webkit:1.12.0"权限&#xff1a; <uses-permission android:name"android.permission.INTERNE…

CVE-2022-41128

概述CVE-2022-41128 是 Microsoft Internet Explorer&#xff08;IE&#xff09;浏览器中 JavaScript 引擎&#xff08;JScript/Chakra&#xff09;的一个 0day 漏洞&#xff08;披露时无官方补丁&#xff09;&#xff0c;属于内存破坏类漏洞&#xff0c;可被用于远程代码执行&…

基于LSTM的时间序列到时间序列的回归模拟

获取项目源码点击文末名片项目背景与目标 本项目旨在开发一种基于长短期记忆网络&#xff08;LSTM&#xff09;的模型&#xff0c;用于时间序列到时间序列的回归模拟任务。通过处理多组不同来源的时间序列数据&#xff0c;本模型的目标是从给定的输入序列中预测相应的输出序列。…

Linux基础命令详解:从入门到精通

本文整理了Linux系统中最常用的基础命令&#xff0c;每个命令都配有详细说明和具体示例&#xff0c;帮助你快速掌握Linux操作技巧。文章中用的终端是XShell,系统是Centos&#x1f4c1; 1. ls - 列出目录&#xff08;文件夹&#xff09;内容 功能&#xff1a;显示当前目录下的文…

正点原子stm32F407学习笔记10——输入捕获实验

一、输入捕获简介 输入捕获模式可以用来测量脉冲宽度或者测量频率。我们以测量脉宽为例&#xff0c;用一个简图来 说明输入捕获的原理&#xff0c;如图所示&#xff1a;假定定时器工作在向上计数模式&#xff0c;图中 t1到t2 时间&#xff0c;就是我们需要测量的高电平时间。测…

深入理解设计模式:状态模式(State Pattern)

在软件开发中&#xff0c;我们经常会遇到对象的行为随着其内部状态的变化而变化的情况。例如&#xff0c;一个订单可能处于"待支付"、"已支付"、"已发货"或"已完成"等不同状态&#xff0c;每个状态下订单的操作逻辑可能完全不同。如果…