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

PyTorch 深度学习实践 第10讲刘二大人

总结:

1.输入通道个数 等于 卷积核通道个数

2.卷积核个数 等于 输出通道个数

1.单通道卷积

以单通道卷积为例,输入为(1,5,5),分别表示1个通道,宽为5,高为5。假设卷积核大小为3x3,padding=0,stride=1。
卷积过程如下:
请添加图片描述
相应的卷积核不断的在图像上进行遍历,最后得到3x3的卷积结果,结果如下:请添加图片描述

2.多通道卷积(输出结果通道为1的情况)

以彩色图像为例,包含三个通道,分别表示RGB三原色的像素值,输入为(3,5,5),分别表示3个通道,每个通道的宽为5,高为5。假设卷积核只有1个,卷积核通道为3,每个通道的卷积核大小仍为3x3,padding=0,stride=1。

卷积过程如下,每一个通道的像素值与对应的卷积核通道的数值进行卷积,因此每一个通道会对应一个输出卷积结果,三个卷积结果对应位置累加求和,得到最终的卷积结果(这里卷积输出结果通道只有1个,因为卷积核只有1个。卷积多输出通道下面会继续讲到)。

可以这么理解:最终得到的卷积结果是原始图像各个通道上的综合信息结果。请添加图片描述
上述过程中,每一个卷积核的通道数量,必须要求与输入通道数量一致,因为要对每一个通道的像素值要进行卷积运算,所以每一个卷积核的通道数量必须要与输入通道数量保持一致

我们把上述图像通道如果放在一块,计算原理过程还是与上面一样,堆叠后的表示如下:请添加图片描述

3.多通道卷积(输出结果通道为m的情况)

在上面的多通道卷积1中,输出的卷积结果只有1个通道,把整个卷积的整个过程抽象表示,过程如下:
在这里插入图片描述
即:由于只有一个卷积核,因此卷积后只输出单通道的卷积结果(黄色的块状部分表示一个卷积核,黄色块状是由三个通道堆叠在一起表示的,每一个黄色通道与输入卷积通道分别进行卷积,也就是channel数量要保持一致,图片组这里只是堆叠放在一起表示而已)。

那么,如果要卷积后也输出多通道,增加卷积核(filers)的数量即可,示意图如下:请添加图片描述

4.代码

以Pytorch为例,nn.Conv2d(in_channels,out_channels,kernel_size,stride=1,padding=0,dilation=1,groups=1,bias=True)。

参数解释如下:

in_channels:输入维度

out_channels:输出维度

kernel_size:卷积核大小,可以理解为对每个通道上的卷积的尺寸大小

stride:步长大小

padding:补0

dilation:kernel间距

import torchin_channels = 5  #输入通道数量
out_channels =10 #输出通道数量
width = 100      #每个输入通道上的卷积尺寸的宽
heigth = 100     #每个输入通道上的卷积尺寸的高
kernel_size = 3  #每个输入通道上的卷积尺寸
batch_size = 1   #批数量input = torch.randn(batch_size,in_channels,width,heigth)
conv_layer = torch.nn.Conv2d(in_channels,out_channels,kernel_size=kernel_size)out_put = conv_layer(input)print(input.shape)
print(out_put.shape)
print(conv_layer.weight.shape)

在这里插入图片描述
结果解释: (1)输入的张量信息为[1,5,100,100]分别表示batch_size,in_channels,width,height

(2)输出的张量信息为[1,10,98,98]分别表示batch_size,out_channels,width’,height’,其中width’,height’表示卷积后的每个通道的新尺寸大小

(3)conv_layer.weight.shape的输出结果为[10, 5, 3, 3],分表表示out_channels,in_channels,kernel_size ,kernel_size ,可以看到与上面的公式mnk1*k2一致。

http://www.lryc.cn/news/146555.html

相关文章:

  • Linux特殊指令
  • MPI之主从模式的一般编程示例
  • 基于野狗算法优化的BP神经网络(预测应用) - 附代码
  • C语言面向对象的编程思想
  • MPI之非阻塞通信中通信完成检测接口简介
  • Excel:如何实现分组内的升序和降序?
  • 深度学习论文: Segment Any Anomaly without Training via Hybrid Prompt Regularization
  • 【算法训练-字符串】一 最长无重复子串
  • 【数据结构】手撕顺序表
  • 景联文科技数据标注:人体关键点标注用途及各点的位置定义
  • typescript基础之never
  • 电子电路学习笔记之NCP304LSQ37T1G ——超低电流电压检测器
  • 【计算机组成原理】一文快速入门,很适合JAVA后端看
  • 10万字智慧政务大数据平台项目建设方案222页[Word]
  • Python-主线程控制子线程-4
  • 设计模式二十二:策略模式(Strategy Pattern)
  • 【c语言】结构体内存对齐,位段,枚举,联合
  • 干货丨软件测试行业迎来新时代,AI将成为主流技术?
  • MacOS goland go1.21 debug问题
  • python 笔记(1)——基础和常用部分
  • kafka架构和原理详解
  • wsl Ubuntu中非root的普通用户怎么直接执行docker命令
  • Web开发模式、API接口、restful规范、序列化和反序列化、drf安装和快速使用、路由转换器(复习)
  • <AMBA总线篇> AXI总线协议介绍
  • 一个简单的Python网络爬虫教程
  • YARN资源管理框架论述
  • Unity查找资源依赖关系
  • 【操作系统】聊聊局部性原理是如何提升性能的
  • 多线程应用——单例模式
  • 几种在JavaScript中创建对象的方式!