当前位置: 首页 > news >正文

[PyTorch][chapter 33][卷积神经网络]

前言

   参考: 《数字图像处理与机器视觉》 第五章 空间域图像增强,

     图像卷积: 空间域图像增强

     图像增强是根据特定需要突出一副图像中的某些信息,同时削弱或去除

某些不需要信息的处理方法,其主要目的是是的处理后的图像对某种特定的应用来说

比原始图像更适用。因此这类处理时为例某种特殊应用,去改善图像的质量,处理

的结果更适合于人的观察或机器的识别系统

目录

   1: 卷积

   2: LeNet-5

   3: Conv2d


一  卷积

      卷积神经网络的核心是卷积层

     1.1 卷积定义

      对图像的每一个点(x,y)执行以下操作

       1: 对预先定义的以(x,y)为中心点的领域内的像素运算

       2:  将1中的运算结果作为(x,y)点新的响应

      用数学公式来表示

      g(x,y)=\sum_{s=-a}^{a}\sum_{t=-b}^{b} k(s,t) f(x-s,y-t)

      

      图像 f(x,y)

      卷积核 k(s,t)

     如 下图

    

  1.2 卷积网络中的卷积

       在 传统的 数字图像处理里面,卷积核权重系数大小是固定的,

深度学习里面需要预先定义一下,通过训练得到里面权重系数

      

kernel channel卷积核的个数
kernel size卷积核大小
stride滑动的步伐,决定滑动多少步可以到图像边缘
padding填充系数,填0 或边缘像素的扩展,总长能被步长整除。

1.3  input

N图片的个数
channel图片的通道,如RGB c=3, 灰度图 c=1
width图片的宽度
height图片的高度

   例:

   


二  LeNet-5

输入

                     [1,1,28,28]

112828
图像个数网络输入的通道数,灰度图=1图像宽图像高

LeNet-5 共包含 8 层

C1  卷积层

                   [6,1,5,5]

m=6channel=1width=5height=5
网络输出的通道数: 卷积核个数网络输入的通道数:图像的通道卷积核的宽卷积核的高

                    卷积核的channel 数必须和输入的channel 一致

                    偏置 bias: 每个卷积核对应一个bias,共6个

                     输出6张28*28特征图

                    C1 有 156 个可训练参数(每个滤波器 5x5=25 个 bunit 参数和一个 bias 参数,一共 6 个滤波器,共(5x5+1)x6=156个参数,共 156x(28x28)=122,304个连接。

                     

S2  采样层

         有 6 个 14x14 的特征图。特征图中的每个单元与 C1 中相对应特征图的 2x2 邻域相连接。S2层每个单元的 4 个输入相加,乘以一个可训练参数,再加上一个可训练偏置。每个单元的 2x2 感受野并不重叠,因此 S2 中每个特征图的大小是 C1 中特征图大小的 1/4(行和列各 1/2)。

      2*2池化层

      输出 6个14*14 特征图

       S2 层有 12个(6x(1+1)=12)个可训练参数和 5880(14x14 (2 2+1) 6=5880)个连接。

C3 卷积层

       卷积核

m=16channel=1width=5height=5
输出的通道数输入的通道数卷积核的宽卷积核的高

                     输出 16个10*10的feature map

S4 下采样层

       由 16 个 5x5 大小的特征图构成。特征图中的每个单元与 C3 中相应特征图的 2x2 邻域相连接,跟 C1 和 S2 之间的连接一样。S4 层有 32 个可训练参数(每个特征图1个因子和一个偏置16x(1+1)=32)和 2000(16 (2 2+1)x5 x5=2000)个连接。

C5 卷积层

                   卷积核

m=120channel=1width=1height=1
卷积核个数图像的通道卷积核的宽卷积核的高

               输出 有 120 。由于 S4 层特征图的大小也为 5x5 (同滤波器一样),故 C5 特征图的大小为 1x1(5-5+1=1),这构成了 S4 和 C5 之间的全连接。

F6  全连接层

   有 84 个单元(之所以选这个数字的原因来自于输出层的设计)

,与 C5 层全相连。有 10164(84x(120x(1x1)+1)=10164)个可训练参数。如同经典神经网络,F6 层计算输入向量和权重向量之间的点积,再加上一个偏置。然后将其传递给 sigmoid 函数产生单元i的一个状态。

最后,输出层由欧式径向基函数(Euclidean Radial Basis Function)单元组成,每类一个单元,每个有 84 个输入。


三 Conv2d函数详解

 def __init__(self,in_channels: int,out_channels: int,kernel_size: _size_2_t,stride: _size_2_t = 1,padding: _size_2_t = 0,dilation: _size_2_t = 1,groups: int = 1,bias: bool = True,padding_mode: str = 'zeros'  # TODO: refine this type):
参数意义
in_channels网络输入的通道数,RGB =3 

out_channels

网络输出的通道数, 卷积核的个数
kernel_size卷积核的大小
stride是卷积过程中移动的步长。默认情况下是1。一般卷积核在输入图像上的移动是自左至右,自上至下
padding填充,默认是0填充
dilationdilation:扩张。一般情况下,卷积核与输入图像对应的位置之间的计算是相同尺寸的,也就是说卷积核的大小是3X3,那么它在输入图像上每次作用的区域是3X3,这种情况下dilation=0。当dilation=1时,表示的是下图这种情况
groups分组。指的是对输入通道进行分组,如果groups=1,那么输入就一组,输出也为一组。如果groups=2,那么就将输入分为两组,那么相应的输出也是两组。另外需要注意的是in_channels和out_channels必须能整除groups。
bias偏置参数,该参数是一个bool类型的,当bias=True时,表示在后向反馈中学习到的参数b被应用
padding_mode填充模式, padding_mode=‘zeros’表示的是0填充

 例

  

# -*- coding: utf-8 -*-
"""
Created on Mon May 15 15:31:26 2023@author: chengxf2
"""import torch
import torch.nn as nndef main():img = torch.randn(10,3,28,28)conv = nn.Conv2d(3,16,4,stride=2,padding=0)output = conv(img)print(output.shape)
main()
===============
out: torch.Size([10, 16, 13, 13])

  输入:

             10张RGB 图片,图片大小28*28

             [10,3,28,28]

   卷积核

           [16,3,4,4]

  输出

      输出图像的宽度,高度利用下面的公式

       

                          

                             = 13

  torch 里面通过F 函数提供另一种,更加直接的方式定义了 卷积核的shape

参考:

卷积神经网络简介

卷积神经网络基础知识

CNN中的stride、kernel、padding计算 - 知乎

https://blog.csdn.net/jiaoyangwm/article/details/80011656/

Conv2d函数详解(Pytorch)_phil__naiping的博客-CSDN博客

相关文章:

[PyTorch][chapter 33][卷积神经网络]

前言 参考: 《数字图像处理与机器视觉》 第五章 空间域图像增强, 图像卷积: 空间域图像增强 图像增强是根据特定需要突出一副图像中的某些信息,同时削弱或去除 某些不需要信息的处理方法,其主要目的是是的处理后的图像对某种特定的…...

Lift, Splat, Shoot 论文学习

1. 解决了什么问题? LSS 在工业界具有非常重要的地位。自从 Tesla AI Day 上提出了 BEV 感知后,不少公司都进行了 BEV 工程化的探索。当前 BEV 下的感知方法大致分为两类: 自下而上:利用 transformer 的 query 机制,…...

【密码产品篇】动态口令系统密钥体系结构(SM3、SM4)

【密码产品篇】动态口令系统密钥体系结构(SM3、SM4) 动态口令是一种一次性口令机制,用户无须记忆口令,也无须手工更改口令。口令通过用户持有的客户端器件生成,并基于一定的算法与服务端形成同步,从而作为…...

PDF工具Adobe Arcrobat Pro DC下载安装教程

wx供重浩:创享日记 对话框发送:adobe 免费获取Adobe Arcrobat Pro DC安装包 Acrobat是一款PDF(Portable Document Format,便携式文档格式)编辑软件。借助它,您可以以PDF格式制作和保存你的文档 &#xff0c…...

大量从IT培训班出来的程序员们最后都怎样了?

在当今信息时代,IT行业越来越受到人们的关注。越来越多的年轻人选择进入IT行业学习编程技术,而IT培训班也因此应运而生。据统计,在中国,每年约有100万人通过各种途径进入IT行业。其中,通过IT培训班获得技能认证的人数也…...

【论文阅读笔记】Federated Unlearning with Knowledge Distillation

个人阅读笔记,如有错误欢迎指出 Arxiv 2022 [2201.09441] Federated Unlearning with Knowledge Distillation (arxiv.org) 问题: 法律要求客户端有随时要求将其贡献从训练中消除的权利 让全局模型忘记特定客户的贡献的一种简单方法是从头开始对模型进…...

常用MQ介绍与区别

RabbitMQ RabbitMQ是实现AMQP协议(0.9.1) 的消息中间件的一种,由RabbitMQ Technologies Ltd开发并且提供商业支持的,最初起源于金融系统,服务器端用Erlang语言编写,用于在分布式系统中存储转发消息,在易用性、扩展性、…...

今天面试招了个20K的人,从腾讯出来的果然都有两把刷子···

现在找个会自动化测试的人真是难呀,10个里面有8个写了会自动化,但一问就是三不知 公司前段时间缺人,也面了不少测试,前面一开始瞄准的就是中级的水准,也没指望来大牛,提供的薪资在15-20k,面试的…...

加速度传感器的量程估算

下面推导过程中包含一个重要的错误:sinx/x1没有错,但是这里的x是 t,当x t时,位移并非sin(t),而是n*sin(t),我稍後修訂。 在测震动和噪声的场合,现有的加速度传感器,需要客户提供加…...

0601-指针的基础

内存 物理存储器和存储地址空间 物理存储器:实际存在的具体存储器芯片。比如:内存条、RAM芯片、ROM芯片。 存储地址空间:对存储器编码的范围。 编码:对每个物理存储单元(一个字节)分配一个号码寻址&…...

关于K8S库中高可用的锁机制详解

简介 对于无状态的组件来说,天然具备高可用特性,无非就是多开几个副本而已;而对于有状态组件来说,实现高可用则要麻烦很多,一般来说通过选主来达到同一时刻只能有一个组件在处理业务逻辑。 在Kubernetes中,…...

常用中外文献检索网站大盘点

一、常用中文文献检索权威网站: 1、知网:是全球最大的中文数据库。提供中国学术文献、外文文献、学位论文、报纸、会议、年鉴、工具书等各类资源,并提供在线阅读和下载服务。涵盖领域包括:基础科学、文史哲、工程科技、社会科学、…...

公司招了一个00后,以为是个小年轻,没想到人家是个卷王...

公司前段缺人,也面了不少测试,结果竟然没有一个合适的。一开始瞄准的就是中级的水准,也没指望来大牛,提供的薪资也不低,面试的人很多,但平均水平很让人失望。 令我印象最深的是一个00后测试员,…...

数字化转型难?怎么转?听听厂商、CIO、CEO怎么说

数字化转型已经成为当今商业领域中的热门话题。对于许多企业来说,数字化转型是一项重要而且必不可少的战略,以适应快速变化的市场环境并保持竞争力。然而,数字化转型并不是一项容易的任务,它涉及到许多方面,需要综合考虑技术、组织和文化等因素。那么,让我们来听听一些厂…...

C++面试题汇总

C面试题汇总 1. new/delete和malloc/free:2. delete和delete[]:3. 常引用:4. overload、override、overwrite的介绍5. C是不是类型安全的?6. main 函数执行以前,还会执行什么代码?7. 数组与指针的区别&…...

OpenAi编写基于Python+OpenCV的人脸识别实现带墨镜效果

要基于Python和OpenCV实现带墨镜效果的人脸识别,你可以按照以下步骤进行操作: 安装所需的库:确保你已经安装了Python和OpenCV库。你可以使用pip命令来安装OpenCV库:pip install opencv-python。 导入必要的库:在Pytho…...

安卓闲谈吹水

一、熟练掌握 Java 语言,面向对象分析设计能力,反射原理,自定义注解及泛型,多次采用设计模式重构项目 首先我们先了解什么是对象。 1.对象是由我们自己定义的类来创建出来的。 2.对象实际上就是类的具体实现。 (对象是类的一个实…...

测试类的使用

1.在pom文件中添加依赖 <dependencies> <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>compile</scope> </dependency> </dependencies>2.在s…...

【物联网技术对生活的影响与展望】

随着科技日新月异的发展&#xff0c;物联网&#xff08;IoT&#xff09;技术正在快速地影响着我们的生活。它是将各种设备和物品连接在一起&#xff0c;通过互联网使它们可以相互交流和传递数据的技术。它的应用范围广泛&#xff0c;可以涵盖从智能家居到工业网络的各个领域。 …...

MySQL数据库函数详解及示例

以下是一份按照常见MySQL数据库函数&#xff0c;并且包含函数示例&#xff1a; 字符串函数 字符串函数用于处理和操作文本数据。 CONCAT&#xff1a;将多个字符串连接为一个字符串。SUBSTRING&#xff1a;提取字符串的一部分。LENGTH&#xff1a;返回字符串的长度。REPLACE&…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

c# 局部函数 定义、功能与示例

C# 局部函数&#xff1a;定义、功能与示例 1. 定义与功能 局部函数&#xff08;Local Function&#xff09;是嵌套在另一个方法内部的私有方法&#xff0c;仅在包含它的方法内可见。 • 作用&#xff1a;封装仅用于当前方法的逻辑&#xff0c;避免污染类作用域&#xff0c;提升…...

Linux中《基础IO》详细介绍

目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改&#xff0c;实现简单cat命令 输出信息到显示器&#xff0c;你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...

Python实现简单音频数据压缩与解压算法

Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中&#xff0c;压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言&#xff0c;提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...

【深度学习新浪潮】什么是credit assignment problem?

Credit Assignment Problem(信用分配问题) 是机器学习,尤其是强化学习(RL)中的核心挑战之一,指的是如何将最终的奖励或惩罚准确地分配给导致该结果的各个中间动作或决策。在序列决策任务中,智能体执行一系列动作后获得一个最终奖励,但每个动作对最终结果的贡献程度往往…...

CppCon 2015 学习:Time Programming Fundamentals

Civil Time 公历时间 特点&#xff1a; 共 6 个字段&#xff1a; Year&#xff08;年&#xff09;Month&#xff08;月&#xff09;Day&#xff08;日&#xff09;Hour&#xff08;小时&#xff09;Minute&#xff08;分钟&#xff09;Second&#xff08;秒&#xff09; 表示…...