卷积神经网络CNN

图像基础知识

图像是由像素点组成的,每个像素点的取值范围为 : [0, 255] 。像素值越接近于 0 ,颜色越暗,接近于黑色;像素值越接 近于255 ,颜色越亮,接近于白色。
在深度学习中,我们使用的图像大多是彩色图,彩色图由 RGB3 个通道组成,如下图所示

import numpy as np
import matplotlib.pyplot as plt

# 黑
z = np.zeros([200,200,3])
plt.imshow(z)
plt.show()

# 白
w = np.full([200,200,3],255)
plt.imshow(w)
plt.show()

# 美女图片
img = plt.imread('data/img.jpg')
print(img.shape)
plt.imshow(img)
plt.show()

                     

 CNN概述

卷积神经网络(Convolutional Neural Network)是含有卷积层的神经网络. 卷积层的作用就是用来自动学习、提取图 像的特征.
CNN网络主要由三部分构成:卷积层、池化层和全连接层构成:
1. 卷积层负责提取图像中的局部特征;
2. 池化层用来大幅降低参数量级(降维);
3. 全连接层用来输出想要的结果。

卷积层

卷积计算

1. input 表示输入的图像
2. filter 表示卷积核 , 也叫做卷积核 ( 滤波矩阵 )
3. input 经过 filter 得到输出为最右侧的图像,该图叫做特征图
卷积运算本质上就是在卷积核和输入数据的局部区域间做点积。

Padding

通过上面的卷积计算过程,最终的特征图比原始图像小很多,如果想要保持经过卷积后的图像大小不变, 可以在原图周围添加 padding 来实现.

Stride

多通道卷积计算 

 特征图大小

输出特征图的大小与以下参数息息相关 :
1. size: 卷积核 / 过滤器大小,一般会选择为奇数,比如有 1*1 3*3 5*5
2. Padding: 零填充的方式
3. Stride: 步长
那计算方法如下图所示 :
1. 输入图像大小 : W x W
2. 卷积核大小 : F x F
3. Stride: S
4. Padding: P
5. 输出图像大小 : N x N

代码示例

import torch
import torch.nn as nn
import matplotlib.pyplot as plt

img = plt.imread('data/img.jpg')
print(img.shape)

# 卷积层
"""
参数说明:
in_channels: 输入通道数,
out_channels: 输出通道,也可以理解为卷积核kernel的数量
kernel_size:卷积核的高和宽设置,一般为3,5,7...
stride:卷积核移动的步长
padding:在四周加入padding的数量,默认补0
"""
layer = nn.Conv2d(in_channels=3,out_channels=10,kernel_size=3,stride=2,padding=0)

# 图片为维度交换位置 增加维度
img = torch.tensor(img).permute(2,0,1).unsqueeze(0)
# 转换类型
fm = layer(img.type(torch.float32))
print(fm.shape)

池化层

池化计算

池化层 (Pooling) 降低维度 , 缩减模型大小,提高计算速度

​​​Stride

Padding

多通道池化层计算

代码示例

import torch
import torch.nn as nn

torch.random.manual_seed(10)
# 数据             多通道池化改 size
input = torch.randint(0,10,size=(3,3,3),dtype=torch.float32)
print(input)

# 最大池化
mpool = nn.MaxPool2d(kernel_size=2,stride=1,padding=0)
outputs = mpool(input)
print(outputs)

# 平均池化
mpool = nn.AvgPool2d(kernel_size=2,stride=1,padding=0)
outputs = mpool(input)
print(outputs)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

图神经网络实战——图论基础

图神经网络实战——图论基础 0. 前言1. 图属性1.1 有向图和无向图1.2 加权图和非加权图1.3 连通图和非连通图1.4 其它图类型 2. 图概念2.1 基本对象2.2 图的度量指标2.2 邻接矩阵表示法 3. 图算法3.1 广度优先搜索3.2 深度优先搜索 小结系列链接 0. 前言 图论 (Graph theory) …

@Transactional--开启事物后换源报错

一、问题出现的场景 系统架构设计、每个企业一个企业库、通过数据源切在平台库、和企业库之间动态切换完成业务操作。 二、跨库事物失效的原因 1、SpringTransactional不支持跨数据源事物,Spring 事物控制是基于数据库链接进行的,当数据源切换后&#x…

Python算法题集_单词搜索

Python算法题集_单词搜索 题22:单词搜索1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【原始矩阵状态回溯】2) 改进版一【字典检测原始矩阵状态回溯】3) 改进版二【矩阵状态回溯】 4. 最优算法5. 相关资源 本文为Python算法题集之一…

【Datawhale组队学习:Sora原理与技术实战】Attention

Attention Attention 注意力,从两个不同的主体开始。 论文:https://arxiv.org/pdf/1703.03906.pdf seq2seq代码仓:https://github.com/google/seq2seq 计算方法: 加性Attention,如(Bahdanau attention&…

electron-release-server部署electron自动更新服务器记录

目录 一、前言 环境 二、步骤 1、下载上传electron-release-server到服务器 2、宝塔新建node项目网站 3、安装依赖 ①npm install ②安装并配置postgres数据库 ③修改项目配置文件 ④启动项目 ⑤修改postgres的认证方式 ⑥Cannot find where you keep your Bower p…

Sqli-labs靶场第12关详解[Sqli-labs-less-12]

Sqli-labs-Less-12 #手工注入 post传参了 根据题目看,像一个登录页面,尝试使用布尔型盲注测试能否登录网站 1. Username输入a a" 测试是否会有报错,burp抓包 报错:syntax to use near "a"") and passw…

【风格迁移】pix2pixHD:高分辨率图像生成

pix2pixHD:高分辨率图像生成 提出背景问题1: 如何提高生成图像的照片级真实感和分辨率?问题2: 如何利用实例级别的对象语义信息进一步提高图像质量?问题3: 如何实现图像合成的多模态性,允许交互式对象编辑? pix2pixHD …

Vue3中Vuex状态管理库学习笔记

1.什么是状态管理 在开发中,我们会的应用程序需要处理各种各样的数据,这些数据需要保存在我们应用程序的某个位置,对于这些数据的管理我们就称之为状态管理。 在之前我们如何管理自己的状态呢? 在Vue开发中,我们使用…

02、MongoDB -- MongoDB 的安全配置(创建用户、设置用户权限、启动安全控制、操作数据库命令演示、mongodb 的帮助系统介绍)

目录 MongoDB 的安全配置演示前准备:启动 mongodb 服务器 和 客户端 :1、启动单机模式的 mongodb 服务器2、启动 mongodb 的客户端 MongoDB 的安全配置启动演示用到的 mongodb 服务器 和 客户端启动单机模式的 mongodb 服务器:启动 mongodb 的…

光学遥感卫星分辨率的奥秘 !!

文章目录 前言 1、光学遥感卫星分辨率的多维视角 (1)空间分辨率 (2)光谱分辨率 (3)辐射分辨率 (4)时间分辨率 2、光学遥感分辨率的重要性 3、遥感分辨率的挑战与进步 4、未来展望 总…

《Spring Security 简易速速上手小册》第7章 REST API 与微服务安全(2024 最新版)

文章目录 7.1 保护 REST API7.1.1 基础知识详解7.1.2 重点案例:使用 JWT 进行身份验证和授权案例 Demo 7.1.3 拓展案例 1:API 密钥认证案例 Demo测试API密钥认证 7.1.4 拓展案例 2:使用 OAuth2 保护 API案例 Demo测试 OAuth2 保护的 API 7.2 …

【2024】利用python爬取csdn的博客用于迁移到hexo,hugo,wordpress...

前言 博主根据前两篇博客进行改进和升级 利用python爬取本站的所有博客链接-CSDN博客文章浏览阅读955次,点赞6次,收藏19次。定义一个json配置文件方便管理现在文件只有用户名称,后续可加配置读取用户名称,并且将其拼接成csdn个人博客链接ty…

OpenChat:性能高达105.7%,第一个超越ChatGPT的开源模型?

OpenChat:性能高达105.7%,第一个超越ChatGPT的开源模型? 前几天开源模型第一还是是Vicuna-33B、WizardLM,这不又换人了。对于开源模型的风起云涌,大家见怪不怪,不断更新的LLM榜单似乎也没那么吸引人了。 …

数学建模【因子分析】

一、因子分析简介 因子分析由斯皮尔曼在1904年首次提出,其在某种程度上可以被看成是主成分分析的推广和扩展。 因子分析法通过研究变量间的相关系数矩阵,把这些变量间错综复杂的关系归结成少数几个综合因子,由于归结出的因子个数少于原始变…

C/C++工程师面试题(数据库篇)

索引的优缺点 索引是一种支持快速查找特定行的数据结构,如果没有索引,就需要遍历整个表进行查找。用于提高数据检索的速度和效率。 好处: 提高检索速度: 索引可以加快数据的检索速度,因为它们允许数据库系统直接定位到…

Mysql学习之MVCC解决读写问题

多版本并发控制 什么是MVCC MVCC (Multiversion Concurrency Control)多版本并发控制。顾名思义,MVCC是通过数据行的多个版本管理来实现数据库的并发控制。这项技术使得在InnoDB的事务隔离级别下执行一致性读操作有了保证。换言之&#xff0…

【Tomcat】The CATALINA_HOME environment variable is not defined correctly

文章目录 一、问题二、解决办法三、优化 一、问题 运行绿色版Tomcat时,单击apache-tomcat-9.0.27\bin\startup.bat时窗口一闪而过。 检查JAVA_HOME环境变量,可以发现并没有问题。 为了检查错误,将startup.bat程序使用文本编辑器打开&#x…

Debezium发布历史163

原文地址: https://debezium.io/blog/2023/09/23/flink-spark-online-learning/ 欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯. Online machine learning with the data streams from the database …

C++_程序流程结构_选择结构_switch

作用 执行多条件分支语句 语法 if和switch区别 switch 缺点,判断的时候只能是整形或者字符型,不可以是一个区间switch 优点,结构清晰,执行效率高

go 命令行框架cobra

go 命令行框架cobra go 拉取依赖包go get github.com/spf13/cobra 认识spf13/cobra-cli. cobra 命令行框架在golang中的地位也算得上是大明星级别。像k8s,docker都有使用这个框架构建自己命令行这块的功能. 最最最简单的开始----使用命令行工具cobra-cli来初始化你的demo c…