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

pytorch-卷积神经网络

目录

  • 1、卷积
  • 2. 卷积神经网络
    • 2.1 卷积层
    • 2.2 padding
    • 2.3 多kernel
    • 2.4 特征学习
  • 3. pytorch实现卷积层
    • 3.1 nn.Conv2d
    • 3.2 F.conv2d

1、卷积

为了减少网络的复杂度,增加一个滑动的矩阵小窗口,比如minist数据集输入是28x28=784,也就是说除输入层外,其他层的每个节点与上层都有784条权重连线,而增加一个3x3的滑动窗口后,连线就变成了9,这样大大减少了参数量。这里使用了信号中的卷积运算,即对应元素相乘再累加,因此3x3的滑动窗口被称为卷积核,进行的运行叫卷积运算。
在这里插入图片描述
在这里插入图片描述
上图是爱因斯坦头像,如果使用全连接,那么参数量是 1 0 12 10^{12} 1012,而使用10x10的卷积运算后,参数量降到了100M。

2. 卷积神经网络

2.1 卷积层

使用卷积核进行卷积运算的层称之为卷积层
如下图:使用一个3x3的卷积核,先在x方向上移动,再在y方向上移动,每次移动一格,进行卷积运算,计算出对应元素的值,最后得到新的feature map
在这里插入图片描述
在这里插入图片描述

2.2 padding

从上边动图发现,经过卷积后,feature map比之前小了,原来5x5变成了3x3,那么怎么保证原大小输出呢?
如下图所示:分别在x和y方向上各增加一行,权值为0,这样再做卷积运算就可以输出原大小了。
在这里插入图片描述
在这里插入图片描述
Input_channels:比如RGB三个通道
Kernel_channels:几种核,比如blur、sharpen等操作得核
Kernel_size:几×几的核,比如:3x3 5x5
Stride:步长,卷积核每层移动几个,1,2
Padding:0, 1, 1

2.3 多kernel

下图中有两个kernel,k1和k2,input channel是3,因此每个kernel有3个相同的Window与之对应,也就是说input channel与kernel的window数必须一致,multi-k:[16,3,3,3],中的数字分别表示有16个kernel,每个kernel有3个window与input channel对应,window大小是3x3。而下图实际有2个kernel,kernel维度表示为[2,3,3,3]
最后输出feature map是3x3是怎么来的呢?input 每个通道元素与对应window元素相乘累加后得到一个值,再把3个通道的值相加就得到了output的一个值。
在这里插入图片描述

2.4 特征学习

下图表示了特征学习的一个过程:conv1提取了低级特征,比如:汽车的颜色;conv2提取了中级别的特征,比如:轮廓;conv3提取了高级别的特征,比如:汽车的灯、轮子,最后是全连接层,输出分类。
在这里插入图片描述

3. pytorch实现卷积层

3.1 nn.Conv2d

nn.Conv2d是一个类,实例化为layer,调用layer.forward完成一次前向计算,得到输出out
也可以使用out=layer(x)实际上调用的是__call__函数,与执行.forward不同的时,__call__函数中封装了一些hooks函数,会先执行hooks,然后再执行forward,建议使用这种方法。
在这里插入图片描述

3.2 F.conv2d

与nn.Conv2d不同的是F.conv2d是函数方法
在这里插入图片描述

相关文章:

  • 【计算机视觉】数字图像处理基础知识(模拟和数字图像、采样量化、像素的基本关系、灰度直方图、图像的分类)
  • PS Mac Photoshop 2024 for Mac[破]图像处理软件[解]PS 2024安装教程[版]
  • 怎么一键备份还原Win10系统?
  • FTP原理
  • JsonCpp源码跨平台编译
  • 01Linux以及操作系统概述
  • 【wiki知识库】03.前后端的初步交互(展现所有的电子书)
  • 【深度学习】Transformer梳理
  • nginx 安全配置
  • docker安装ubtuntu
  • MongoDB~存储引擎了解
  • C/C++|回调函数的正确打开方式
  • go-gin中session实现redis前缀和db库选择+单点登录
  • 攻防实战 | 邮件高级威胁检测与自动化响应
  • 【原创】springboot+mysql医院预约挂号管理系统设计与实现
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 分享的文章《人生如棋》
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • Angular 响应式表单之下拉框
  • Iterator 和 for...of 循环
  • js写一个简单的选项卡
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • Magento 1.x 中文订单打印乱码
  • node学习系列之简单文件上传
  • October CMS - 快速入门 9 Images And Galleries
  • SpiderData 2019年2月23日 DApp数据排行榜
  • SpringBoot 实战 (三) | 配置文件详解
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • Yii源码解读-服务定位器(Service Locator)
  • 利用jquery编写加法运算验证码
  • 深度学习在携程攻略社区的应用
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 终端用户监控:真实用户监控还是模拟监控?
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​secrets --- 生成管理密码的安全随机数​
  • ​渐进式Web应用PWA的未来
  • # linux 中使用 visudo 命令,怎么保存退出?
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)
  • (笔试题)合法字符串
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转)负载均衡,回话保持,cookie
  • (转)关于多人操作数据的处理策略
  • (转)平衡树
  • .htaccess配置重写url引擎
  • .jks文件(JAVA KeyStore)
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .Net(C#)自定义WinForm控件之小结篇
  • .NET业务框架的构建
  • /bin、/sbin、/usr/bin、/usr/sbin
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(朱雀组)