深度学习:PyTorch卷积神经网络(1)

本文目录:

  • 一、CNN概述
  • 二、CNN日常应用
  • 三、CNN的卷积层
    • (一 )基本介绍
    • (二)卷积层计算
      • 1.对输入数据的要求
      • 2.卷积核核心参数
      • 3.计算过程
      • 4.特征图尺寸计算
      • 5.1、多通道卷积计算
      • 5.2、多卷积核计算
      • 6.PyTorch卷积层API

前言:上篇文章讲解了图像,这篇文章正式进入卷积神经网络讲解。

一、CNN概述

卷积神经网络(Convolutional Neural Network, CNN)是一种专门用于处理网格状数据(如图像、视频、语音信号等)的深度学习模型。其核心思想是通过局部感受野、权值共享和空间下采样来高效提取特征,广泛应用于计算机视觉、自然语言处理(如文本分类)等领域。

CNN网络主要由三部分构成:卷积层、池化层和全连接层构成:

(1)卷积层负责提取图像中的局部特征;

(2)池化层用来大幅降低参数量级(降维);

(3)全连接层类似人工神经网络的部分,用来输出想要的结果。

CNN实践案例:
在这里插入图片描述
上图中CNN要做的事情就是:给定一张图片,是车还是马未知,是什么车也未知,现在需要模型判断这张图片里具体是一个什么东西,总之输出一个结果:如果是车,那是什么车?

二、CNN日常应用

图像分类:最常见的应用,例如识别图片中的物体类别;

目标检测:检测图像中物体的位置和类别;

图像分割:将图像分成多个区域,用于语义分割;

人脸识别:识别图像中的人脸;

医学图像分析:用于检测医学图像中的异常(如癌症检测、骨折检测等);

自动驾驶:用于识别交通标志、车辆、行人等。

三、CNN的卷积层

(一 )基本介绍

卷积层是CNN的核心组件,用于提取输入数据(如图像、语音、文本)的局部特征。它的核心思想是通过局部连接、权值共享和平移不变性高效处理网格状数据(如像素矩阵)。

卷积层利用卷积核(滤波器)对输入进行处理(卷积操作),从而生成特征图(feature map),并且每个卷积层能够提取不同层次的特征,从低级特征(如边缘)到高级特征(如物体的形状)。

卷积层的主要作用如下:

  • 特征提取:卷积层的主要作用是从输入图像中提取低级特征(如边缘、角点、纹理等)。通过多个卷积层的堆叠,网络能够逐渐从低级特征到高级特征(如物体的形状、区域等)进行学习;

  • 权重共享:在卷积层中,同一个卷积核在整个输入图像上共享权重,这使得卷积层的参数数量大大减少,减少了计算量并提高了训练效率;

  • 局部连接:卷积层中的每个神经元仅与输入图像的一个小局部区域相连,这称为局部感受野,这种局部连接方式更符合图像的空间结构,有助于捕捉图像中的局部特征;

  • 空间不变性:由于卷积操作是局部的并且采用权重共享,卷积层在处理图像时具有平移不变性。也就是说,不论物体出现在图像的哪个位置,卷积层都能有效地检测到这些物体的特征。

(二)卷积层计算

1.对输入数据的要求

在这里插入图片描述

2.卷积核核心参数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.计算过程

在这里插入图片描述
1. input 表示输入的图像;

2. filter 表示卷积核, 也叫做滤波器(滤波矩阵)

  • 一组固定的权重,因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter;
  • 非严格意义上来讲,下图中红框框起来的部分便可以理解为一个滤波器,即带着一组固定权重的神经元,多个滤波器叠加便成了卷积层;
  • 一个卷积核就是一个神经元。
    在这里插入图片描述
    卷积运算本质上就是在滤波器和输入数据的局部区域间做点积。

如上图左上角的点计算:
在这里插入图片描述
按照上面的计算方法可以得到最终的特征图为:
在这里插入图片描述
实图-特征图对比:
在这里插入图片描述
注意:如果想要提取更多特征(比如花朵的颜色深浅、轮廓、纹理),可以用多个卷积核(分别提取花朵的颜色深浅、轮廓、纹理,生成不同的特征图)。

4.特征图尺寸计算

在这里插入图片描述
注意:

在这里插入图片描述

5.1、多通道卷积计算

在这里插入图片描述
如上图,计算方法如下:

  1. 当输入有多个通道(Channel), 例如 RGB 三个通道, 此时要求卷积核需要拥有相同的通道数(图像有多少通道,每个卷积核就有多少通道);
  2. 每个卷积核通道与对应的输入图像的各个通道进行卷积;
  3. 将每个通道的卷积结果按位相加得到最终的特征图。

如下图所示:

在这里插入图片描述

5.2、多卷积核计算

在卷积神经网络(CNN)中,多个卷积核(Filters/Kernels) 的计算是核心操作之一,它使网络能够同时提取多种特征(如边缘、纹理、颜色等)。

特点:

(1)每个卷积核学习不同的特征:

例如:第一个核可能检测水平边缘,第二个核检测垂直边缘,第三个核检测红色通道的特定模式等。

(2)输出多通道特征图:

若有 C_out 个卷积核,输出特征图会有 C_out 个通道。

在这里插入图片描述
如上图,可以看到:

  • 两个神经元,意味着有两个滤波器;
  • 数据窗口每次移动2个步长取3*3的局部数据,即stride=2;
  • zero-padding=1。输入数据由5*5*3变为7*7*3
  • 左边是输入(7*7*3中,7*7代表图像的像素/长宽,3代表R、G、B 三个颜色通道);
  • 中间部分是两个不同的滤波器Filter w0、Filter w1;
  • 最右边则是两个不同的输出。

6.PyTorch卷积层API

# 导包
import numpy as np
import matplotlib.pyplot as plt
import torch# 加载数据
n1_img = plt.imread('data/img.jpg')
print(n1_img.shape)
# 把numpy转换为tensor
t1_img = torch.from_numpy(n1_img)
print(t1_img.shape)
# 交换维度 (H,W,C)->(C,H,W)
t2_img = t1_img.permute(2, 0, 1)
print(t2_img.shape)
# 升维
t3_img = t2_img.unsqueeze(0)
print(t3_img.shape)
# TODO 创建卷积层对象  设置输出通道数4,意味着输出的特征图4
conv = torch.nn.Conv2d(in_channels=3, out_channels=4, kernel_size=3, stride=1, padding=0)
# TODO 调用卷积层对象,提取特征,注意类型转换
output = conv(t3_img.to(torch.float32))
print(output.shape)
# 降维
output = output.squeeze(0)
print(output.shape)
# 交换维度
output = output.permute(1, 2, 0)
print(output.shape)
# 转换为numpy TODO 索引0,1,2,3分别可以获取第0,1,2,3个特征图
output = output[:, :, 2].detach().numpy()  #2:第三个图
print(output.shape)
# 画图
plt.imshow(output)
plt.show()

运行结果:
在这里插入图片描述
可依次修改output = output[:, :, 2].detach().numpy() 将其它三个图显示出来(将2依次换成0、1、3)。

今日分享到此结束。

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

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

相关文章

linux网络编程socket套接字

套接字概念 Socket本身有“插座”的意思,在Linux环境下,用于表示进程间网络通信的特殊文件类型。本质为内核借助缓冲区形成的伪文件。 既然是文件,那么理所当然的,我们可以使用文件描述符引用套接字。与管道类似的,L…

Python 数据分析与可视化 Day 5 - 数据可视化入门(Matplotlib Seaborn)

🎯 今日目标 掌握 Matplotlib 的基本绘图方法(折线图、柱状图、饼图)掌握 Seaborn 的高级绘图方法(分类图、分布图、箱线图)熟悉图像美化(标题、标签、颜色、风格)完成一组学生成绩数据的可视化…

CephFS “Client Failing to Respond to Cache Pressure“ 告警分析

告警含义 当出现 Client failing to respond to cache pressure 警告时,表明: 元数据服务器 (MDS) 要求客户端释放缓存的元数据(如 inode Capabilities)客户端未能及时响应 释放请求核心触发机制 MDS 通过以下周期性流程管理缓存 阶段操作触发条件Cache Trim 周期每隔 mds…

生成式人工智能实战 | 生成对抗网络(Generative Adversarial Network, GAN)

生成式人工智能实战 | 生成对抗网络 0. 前言1. 生成对抗网络2. 模型构建2.1 生成器2.2 判别器 3. 模型训练3.1 数据加载3.2 训练流程 0. 前言 生成对抗网络 (Generative Adversarial Networks, GAN) 是一种由两个相互竞争的神经网络组成的深度学习模型,它由一个生成…

缓存与加速技术实践-MongoDB数据库应用

一.什么是MongoDB MongoDB 是一个文档型数据库,数据以类似 JSON 的文档形式存储。 MongoDB 的设计理念是为了应对大数据量、高性能和灵活性需求。 MongoDB 使用集合(Collections)来组织文档(Documents)&#xff0…

声网对话式AI把“答疑机器人”变成“有思维的助教”

作为一家专注初高中学生的线上教育平台,我们精心打磨的系统化课程收获了不少认可,但课后无人答疑的难题却始终横亘在前。学生课后遇到疑惑,要么只能默默憋在心里,要么就得苦苦等待下一节课,家长们也频繁抱怨 “花了钱&…

常见的排序方法

目录 1. 插入排序 2. 希尔排序 3. 选择排序 4. 堆排序 5. 冒泡排序 6. 快速排序 1. 快速排序的实现 1. 思路(以从小到大排序为例) 2. 选取基准元素的方法(Hoare) 3. 选取基准元素的方法(挖坑法) …

【matlab定位例程】基于AOA和TDOA混合的定位方法,背景为三维空间,自适应锚点数量,附下载链接

文章目录 代码概述代码功能概述核心算法原理AOA定位模型TDOA定位迭代算法混合定位策略关键技术创新 运行结果4个锚点的情况40个锚点的情况 MATLAB源代码 代码概述 代码功能概述 本代码实现了一种三维空间中的混合定位算法,结合到达角( A O A AOA AOA&a…

专题:2025医疗AI应用研究报告|附200+份报告PDF汇总下载

原文链接:https://tecdat.cn/?p42748 本报告汇总解读聚焦医疗行业人工智能应用的前沿动态与市场机遇,以数据驱动视角剖析技术演进与商业落地的关键路径。从GenAI在医疗领域的爆发式增长,到细分场景的成熟度矩阵,再到运营成本压力…

推荐一个前端基于vue3.x,vite7.x,后端基于springboot3.4.x的完全开源的前后端分离的中后台管理系统基础项目(纯净版)

XHan Admin 简介 🎉🎉 XHan Admin 是一个开箱即用的开源中后台管理系统基础解决方案, 项目为前后端分离架构。采用最新的技术栈全新构建,纯净的项目代码,没有历史包袱。 前端使用最新发布的 vite7.0 版本构建&#xf…

MySQL误删数据急救指南:基于Binlog日志的实战恢复详解

背景 数据误删是一个比较严重的场景 1.典型误操作场景 场景1:DELETE FROM orders WHERE status0 → 漏写AND create_time>‘2025-06-20’ 场景2:DROP TABLE customer → 误执行于生产环境 认识 binlog 1.binlog 的核心作用 记录所有 DDL/DML 操…

高效数据采集方案:快速部署与应用 AnyCrawl 网页爬虫工具实操指南

以下是对 AnyCrawl 的简单介绍: AnyCrawl 提供高性能网页数据爬取,其功能专为 LLM 集成和数据处理而设计支持利用搜索引擎直接查询获取结果内容,类似 searxng提供开发者友好的API,支持动态内容抓取,并输出结构化数据&…

vue3可以分页、搜索的select

下载 npm i v-selectpage基本使用 import { SelectPageList } from v-selectpage;<SelectPageListlanguage"zh-chs"key-prop"id"label-prop"name"fetch-data"fetchData" />const fetchData (data,callback) > {const { sea…

C# 入门学习教程 (一)

文章目录 一、解决方案与项目1. Solution 与 project 二、类与名称空间1.类与名称空间2.类库的引用1. DLL引用&#xff08;黑盒引用&#xff0c;无源代码&#xff09;2. Nuget 引用3. 项目引用&#xff08;白盒引用&#xff0c;有源代码&#xff09; 3.依赖关系 三、类&#xf…

76、单元测试-参数化测试

76、单元测试-参数化测试 参数化测试是一种单元测试技术&#xff0c;通过将测试数据与测试逻辑分离&#xff0c;使用不同的输入参数多次运行相同的测试用例&#xff0c;从而提高测试效率和代码复用性。 #### 基本原理 - **数据驱动测试**&#xff1a;将测试数据参数化&#xf…

SQL学习笔记3

SQL常用函数 1、字符串函数 函数调用的语法&#xff1a;select 函数&#xff08;参数); 常用的字符串函数有&#xff1a; 拼接字符串&#xff0c;将几个字符串拼到一起&#xff1a;concat (s1,s2,……); select concat(你好,hello); update mytable set wherefo concat(中…

Golang 面向对象编程,如何实现 封装、继承、多态

Go语言虽然不是纯粹的面向对象语言&#xff0c;但它通过结构体(struct)、接口(interface)和方法(method)提供了面向对象编程的能力。下面我将通过具体示例展示Go中如何实现类、封装、继承、多态以及构造函数等概念。 1. 类与封装 在Go中&#xff0c;使用结构体(struct)来定义…

为什么android要使用Binder机制

1.linux中大多数标准 IPC 场景&#xff08;如管道、消息队列、ioctl 等&#xff09;的进程间通信机制 ------------------ ------------------ ------------------ | 用户进程 A | | 内核空间 | | 用户进程 B | | (User Spa…

OpenCV CUDA模块设备层-----双曲余弦函数cosh()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 该函数用于计算四维浮点向量&#xff08;float4类型&#xff09;的双曲余弦值&#xff0c;作用于CUDA设备端。双曲余弦函数定义为cosh(x) (eˣ …

48页PPT | 企业数字化转型关键方法论:实践路径、案例和落地评估框架

目录 一、什么是企业数据化转型&#xff1f; 二、为什么要进行数据化转型&#xff1f; 1. 市场复杂性与不确定性上升 2. 内部流程效率与协同难题突出 3. 数字资产沉淀不足&#xff0c;智能化基础薄弱 三、数据化流程管理&#xff1a;从“业务流程”到“数据流程”的对齐 …