卷积和池化

卷积:

就是有一个卷积核,还有一个x*x的图片,卷积核大小是y*y的话,对图像做卷积就是将图片中和卷积核大小一样的部分进行运算,也就是相乘求和,有点类似算法中的滑动窗口,只不过这里是二维滑动窗口,比如说

[1,1,1,0,0

0,1,1,1,0

0,0,1,1,1

0,0,1,1,1

0,0,1,1,0

0,1,1,0,0]一个5*5的,卷积核是[[1,0,1],[0,1,1],[1,0,1]],那么如果对A33做卷积,那么就是对应位置相乘然后求和,也就是4,然后卷积后的大小等于(x-y/步长s)+1,所以写代码的时候经常会看到stride步长参数,但是这样也能看出卷积后大小会急速缩小,所以有时候为了让卷积后大小和输入一样,会在周围加上填充0,可以理解为补上n圈的0,代码中参数叫padding,padding=1就是补一圈,这样图片变成7*7,卷积后还是5*5(步长通常为1的情况下)

代码中常看见Conv2d,这就是卷积层,里面参数像filter是通道数,kernel_size就是卷积核大小,strides步长,padding填充,卷积过程也可以看出可以提取并增强特征

池化:

和卷积类似,也会给一个池化核,不过不像卷积核那样有个值,是个空的,运行过程和卷积一样,也是依次移动。池化规则又最大值池化,平均值池化等,所以代码中常常见到Maxpooling2d,里面参数也有pool_size,strides,padding,池化也可以降维提取特征

卷积池化在图片识别中很重要,主要是这三个特性,平移、旋转、尺度不变性,也就是说,不管特征怎么平移,旋转或者放缩,最后都能把特征提取出来。比如mnist识别,数字是站着还是躺着都能识别

相比于都用全连接层,比如MLP;CNN模型有俩特点,局部连接和权重共享,啥意思呢,这里没太懂,个人理解就是每次运算因为卷积核覆盖部分很多都是一样的,所以可以节省很多算力资源,

看个训练mnist的cnn模型代码

class Net(torch.nn.Module):def __init__(self):super(Net, self).__init__()#两个卷积层self.conv1 = torch.nn.Conv2d(1, 10, kernel_size=5)  #1为in_channels 10为out_channelsself.conv2 = torch.nn.Conv2d(10, 20, kernel_size=5)#池化层self.pooling = torch.nn.MaxPool2d(2)  #2为分组大小2*2#全连接层 320 = 20 * 4 * 4self.fc = torch.nn.Linear(320, 10)def forward(self, x):batch_size = x.size(0)x = F.relu(self.pooling(self.conv1(x)))x = F.relu(self.pooling(self.conv2(x)))x = x.view(batch_size, -1)  #将数据展开,为输入全连接层做准备x = self.fc(x)return x

conv1就是输入通道为1,输出10通道,这里10通道数代表输出十张特征图,卷积核5*5,然后池化后经过激活函数(也可以先relu后池化,能更好实现非线性特征学习,然后再池化减少尺寸),两层conv后经过个全连接层得出结果,这里320个神经元的由来:第一层卷积把28*28,变成(28-5)/1+1=24,然后池化层变成(24-2)/2+1=12层,然后第二层卷积(12-5)/1+1=8层,然后第二次池化(8-2)/2+1=4层,由于最后输出通道数有20,所以一共就是4*4的有20张,总特征数就是4*4*20=320,注意relu或sigmod这种激活函数层不会改变图片大小

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

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

相关文章

一篇复现Docker镜像操作与容器操作

华子目录 Docker镜像操作创建镜像方式1docker commit示例 方式2docker import示例1:从本地文件系统导入示例2:从远程URL导入注意事项 方式3docker build示例1:构建镜像并指定名称和标签示例2:使用自定义的 Dockerfile 路径构建镜像…

Unity连接MySQL踩坑,问题处理记录

用的unity2021版本,MySQL是官方下载的最新版8.0.36. 安装MySQL时,过去如果安装过,一定要删干净,单纯的卸载不行,网上有很多教程。 MySQL安装完成后,将安装目录的MySql.Data.dll文件放入unity项目的Plugin…

数据运营常用的8大模型

✅作者简介:《数据运营:数据分析模型撬动新零售实战》作者、《数据实践之美》作者、数据科技公司创始人、多次参加国家级大数据行业标准研讨及制定、高端企培合作讲师。 🌸公众号:风姑娘的数字视角,免费分享数据应用相…

202447读书笔记|《围炉夜话》——多记先正格言,胸中方有主宰 闲看他人行事,眼前即是规箴

202447读书笔记|《围炉夜话》——多记先正格言,胸中方有主宰;闲看他人行事,眼前即是规箴 围炉夜话 《围炉夜话(读客三个圈经典文库)》作者王永彬。读《围炉夜话》,可以掌握君子安身立业的大智慧&#xff01…

基于大模型的复杂决策支持系统设计与实施策略

基于大模型的复杂决策支持系统设计与实施策略 1. 背景介绍 随着大数据、云计算和人工智能技术的飞速发展,决策支持系统(Decision Support System, DSS)在各个领域得到了广泛应用。传统的决策支持系统主要依赖于统计分析和专家系统&#xff…

【Canvas与艺术】暗蓝网格汽车速度仪表盘

【关键点】 采用线性渐变色&#xff0c;使上深下浅的圆有凹下效果&#xff0c;使上浅下深的圆有凸起效果&#xff0c;两者结合就有立体圆钮的感觉。 【图例】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type&quo…

Java全栈课程之Linux———目录相关命令

一、绝对路径和相对路径 我们知道Linux的目录结构为树状结构&#xff0c;最顶级的目录为根目录 /。 其他目录通过挂载可以将它们添加到树中&#xff0c;通过解除挂载可以移除它们。 在开始本教程前我们需要先知道什么是绝对路径与相对路径。 绝对路径&#xff1a; 路径的写…

2015年认证杯SPSSPRO杯数学建模C题(第二阶段)荒漠区动植物关系的研究全过程文档及程序

2015年认证杯SPSSPRO杯数学建模 C题 荒漠区动植物关系的研究 原题再现&#xff1a; 环境与发展是当今世界所普遍关注的重大问题, 随着全球与区域经济的迅猛发展, 人类也正以前所未有的规模和强度影响着环境、改变着环境, 使全球的生命支持系统受到了严重创伤, 出现了全球变暖…

R语言基础入门

1.保存或加载工作空间 改变工作目录——进行文件读写&#xff0c;默认去指定文件进行操作。&#xff08;使用R时&#xff0c;最好先设定工作目录&#xff08;setwd(),getwd()&#xff09;&#xff09; setwd(“工作文件路径”)&#xff1a;建立工作目录 getwd&#xff08;&…

【STM32嵌入式系统设计与开发】——9Timer(定时器中断实验)

这里写目录标题 一、任务描述二、任务实施1、ActiveBeep工程文件夹创建2、函数编辑&#xff08;1&#xff09;主函数编辑&#xff08;2&#xff09;USART1初始化函数(usart1_init())&#xff08;3&#xff09;USART数据发送函数&#xff08; USART1_Send_Data&#xff08;&…

【论文阅读】Probabilistic Imputation for Time-series Classification with Missing Data

Probabilistic Imputation for Time-series Classification with Missing Data 论文链接&#xff1a;https://icml.cc/virtual/2023/poster/23522 作者&#xff1a;SeungHyun Kim Hyunsu Kim EungGu Yun Hwangrae Lee Jaehun Lee Juho Lee 机构&#xff1a;韩国科学技术…

突破编程_C++_面试(STL 编程 priority_queue)

1 请解释 priority_queue 在 STL 中的作用&#xff0c;并说明它与队列&#xff08;queue&#xff09;的主要区别是什么&#xff1f; priority_queue 在 STL 中的作用 priority_queue 是 STL&#xff08;Standard Template Library&#xff09;中的一个容器适配器&#xff0c;…

什么情况下 C++ 需要垃圾处理机制?

C&#xff0c;作为一种以性能和灵活性著称的编程语言&#xff0c;历来以其严谨的手动内存管理而闻名。然而&#xff0c;尽管C提供了丰富的工具如RAII&#xff08;Resource Acquisition Is Initialization&#xff09;原则、智能指针等来协助开发者有效地管理内存&#xff0c;但…

学会在 C++ 中使用变量:从定义到实践

C 变量 变量是用于存储数据值的容器。 在 C 中&#xff0c;有不同类型的变量&#xff08;使用不同的关键字定义&#xff09;&#xff0c;例如&#xff1a; int - 存储整数&#xff08;没有小数点&#xff09;&#xff0c;例如 123 或 -123double - 存储浮点数&#xff0c;带…

Python 命名规则

变量名 使用小写字母和下划线组合&#xff0c;例如&#xff1a;my_variable。 变量名应具有描述性&#xff0c;以便易于理解变量的用途。 函数名 使用小写字母和下划线组合&#xff0c;例如&#xff1a;my_function。 函数名应具有描述性&#xff0c;以便易于理解函数的功…

Qt登录页面

#include "mywidget.h" #include "ui_mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent), ui(new Ui::MyWidget) {ui->setupUi(this);//接收动图QMovie *mv new QMovie(":/pictrue/luori.gif");ui->loglab->setMovie(…

2024蓝桥杯省赛保奖突击班-Day1-二分查找_笔记_练习题解

3月22日-课堂笔记 非降序序列二分查找等于 x x x 的数下标 int find(int x, int l, int r) {while(l < r) {int mid (l r) / 2;if(x < a[mid]) r mid;else l mid 1;}return l; }非降序可重序列下标最小 ≥ x \geq x ≥x 的元素 int find(int x, int l, int r) …

修复编译RK3568-buildroot时提示不能使用root权限编译的问题

问题 使用 rk3568 的 sdk 中的 buildroot 来编译根文件系统的时候&#xff0c;出现 "you should not run configure as root (set FORCE_UNSAFE_CONFIGURE1 in environment&#xff09;" 的错误。 解决方法 根据错误提示&#xff0c;我们将 set FORCE_UNSAFE_CON…

算法打卡day16

今日任务&#xff1a; 1&#xff09;513.找树左下角的值 2&#xff09;112.路径总和 3&#xff09;113.路径总和Ⅱ 4&#xff09;106.从中序与后序遍历序列构造二叉树 5&#xff09;105.从前序与中序遍历序列构造二叉 513.找树左下角的值 题目链接&#xff1a;513. 找树左下角…

如何在软件测试行业走的更远?

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 时间往前推10年&#xff0c;IT业如日中天。 其中测试更是一个极具包容性的行业。那些希望在技术…