pytorch深度学习实战lesson20

news2025/8/12 16:03:01

第二十课 卷积层的多输入和多输出通道

目录

理论部分

多输入通道

多输出通道

实践部分


理论部分

多输入通道

假设图片大小是200*200的话,那么用张量表示这个图片的话就是200*200*3,因为彩色图片是由红、绿、蓝三个通道构成的,因此表示一个彩色图片的时候要将这三原色的信息也给表示出来。

那么舒润有多个通道的话要怎么计算呢?

多通道的话就是每个通道都做次卷积,卷积核的维度是一样的,但是数值不一定是一样的。每个通道算完卷积后,如上图所示,再把卷积的计算结果加在一起。符号语言如下图所示:

多输出通道

多输出通道的话,对于下图来说也就是红框的部分多了一维。

为什么要设置多输入通道和多输出通道?

因为每个输出通道都可以识别特定的模式;而每个输入通道可以识别并组合输入中的模式,输入通道把输入输入进去后网络会为输入数据匹配相应的权重,来判断哪些重要哪些不重要。

对于多输入输出通道的底层神经网络,越底层它输出的东西越抽象,可能是一幅图片的纹理,但上层的网络在将底层网络加权求和后,它会把重要的纹理或信息拼接到一起,最终形成猫脚,最最终形成一只猫。

这个1*1的卷积核不会去看通道里面的空间模式,因为1*1的卷积核只是看输入数据的单独一个像素,它不会看像素周围的一圈其他像素。

如下我画的图所示,一个1*1的卷积层其实可以等价成一个全连接层。

实践部分

代码:

#多输入多输出通道
#实现一下多输入通道互相关运算
import torch
from d2l import torch as d2l
#多通道输入
def corr2d_multi_in(X, K):#二维互相关运算处理多通道输入函数
    #对输入通道进行遍历拿出各个输入通道的每个小矩阵再做互相关运算,再按元素求和得到最终的结果(单通道输出)
    return sum(d2l.corr2d(x, k) for x, k in zip(X, K))
#验证互相关运算的输出
X = torch.tensor([[[0.0, 1.0, 2.0], [3.0, 4.0, 5.0], [6.0, 7.0, 8.0]],
                  [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]]])
K = torch.tensor([[[0.0, 1.0], [2.0, 3.0]], [[1.0, 2.0], [3.0, 4.0]]])
print(corr2d_multi_in(X, K))#多通道输入,单通道输出
#多通道输出
#计算多个通道的输出的互相关函数
def corr2d_multi_in_out(X, K):
    return torch.stack([corr2d_multi_in(X, k) for k in K], 0)#多通道输出,把上面的输出堆叠起来,形成多通道输出
K = torch.stack((K, K + 1, K + 2), 0)
print(K.shape)
print(corr2d_multi_in_out(X, K))
print('#######################################################################')
#1*1卷积在全连接层(矩阵乘法)的实现以及直接实现
#1x1卷积
def corr2d_multi_in_out_1x1(X, K):
    c_i, h, w = X.shape
    print(X.shape)
    c_o = K.shape[0]
    X = X.reshape((c_i, h * w))
    K = K.reshape((c_o, c_i))
    Y = torch.matmul(K, X)
    return Y.reshape((c_o, h, w))
X = torch.normal(0, 1, (3, 3, 3))
K = torch.normal(0, 1, (2, 3, 1, 1))#输出通道为2,输入通道为3
Y1 = corr2d_multi_in_out_1x1(X, K)#全连接的实现(矩阵乘法)
Y2 = corr2d_multi_in_out(X, K)
print(X,'\n',K,'\n',Y1,'\n',Y2)
print(float(torch.abs(Y1 - Y2).sum()) < 1e-6)#说明他近似于0.也就是Y1Y2差不多。

tensor([[ 56.,  72.],
        [104., 120.]])
torch.Size([3, 2, 2, 2])
tensor([[[ 56.,  72.],
         [104., 120.]],

        [[ 76., 100.],
         [148., 172.]],

        [[ 96., 128.],
         [192., 224.]]])
#######################################################################
torch.Size([3, 3, 3])
tensor([[[-1.6313,  0.0887,  0.6206],
         [-1.4196, -1.1524, -0.8890],
         [ 1.5420, -0.4402,  3.1655]],

        [[ 0.4326, -0.7483, -0.4302],
         [-1.0683, -0.5747, -0.5555],
         [ 0.7052, -0.6912,  0.7018]],

        [[ 0.2094,  0.3906, -1.5985],
         [ 0.8189, -1.6181, -2.3361],
         [ 0.3077, -0.8393, -0.3554]]]) 
 tensor([[[[-0.4711]],

         [[ 0.4921]],

         [[ 1.3620]]],


        [[[ 1.2301]],

         [[ 1.3347]],

         [[ 0.6919]]]]) 
 tensor([[[ 1.2667,  0.1219, -2.6813],
         [ 1.2585, -1.9437, -3.0362],
         [ 0.0395, -1.2759, -1.6301]],

        [[-1.2844, -0.6194, -0.9168],
         [-2.6055, -3.3042, -3.4514],
         [ 3.0509, -2.0447,  4.5847]]]) 
 tensor([[[ 1.2667,  0.1219, -2.6813],
         [ 1.2585, -1.9437, -3.0362],
         [ 0.0395, -1.2759, -1.6301]],

        [[-1.2844, -0.6194, -0.9168],
         [-2.6055, -3.3042, -3.4514],
         [ 3.0509, -2.0447,  4.5847]]])
True
 

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

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

相关文章

看完这套Java笔记,才明白笔者同时斩获7份大厂offer是有原因的!

不知道各位程序员朋友有没有做笔记的习惯&#xff1f;不过&#xff0c;我觉得大家还是蛮喜欢收藏笔记的&#xff0c;嘿嘿&#xff0c;我也是。 前几天恰好看到一篇文章&#xff0c;里面详细罗列了关于Java的所有知识点。看目录&#xff0c;是从Jvm开始&#xff0c;再讲集合、多…

PHP使用阿里云对象存储oss

目录 1.使用composer安装依赖 2.编写代码 3.调用 4.遇到问题 (1) 上传成功 访问发现没有权限 (2) 接着访问&#xff0c;发现直接下载 (3) 上传文件 发现文件内容是空 5.自定义域名上传文件 (1) 配置&#xff1a; (2) 代码修改 1.使用composer安装依赖 composer requ…

技术笔记Android应用MediaPipe(一):Windows安装MediaPipe

一、MediaPipe概述 MediaPipe提供跨平台&#xff0c;为实时流媒体提供自定义的机器学习解决方案的应用框架。MediaPipe的主要特点&#xff1a; &#xff08;1&#xff09;端对端的加速&#xff1a;内置快速机器学习推理和处理&#xff0c;使得在普通硬件中也能加速使用。 &…

电瓶车、汽车智慧充电站可提高运营利润,缩短投资回收周期!

安科瑞 李可欣 具体可咨询&#xff1a;Acrel_lkx 需求分析 传统充电站现状 充电站用户需求 建设智慧充电站&#xff0c;解决传统充电站痛点 安科瑞充电站解决方案 保障配电可靠&#xff0c;解决运维难的问题&#xff0c;降低人力成本 确保用电安全&#xff0c;及时切除隐患…

数云融合丨重构传统商贸数字化解决方案

随着5G技术的高速发展&#xff0c;我们迎来了数字化的新阶段&#xff0c;中国也正在加快步入新的消费时代。 数字化的发展带来的多元下消费力的提升&#xff0c;让传统商贸行业迎来数字化产业升级的十字路口&#xff0c;今天我们就来聊一聊数字化对传统商贸的重构。 传统商贸面…

LQ0204 振兴中华【递归】

题目来源&#xff1a;蓝桥杯2013初赛 C A组C题 题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 小明参加了学校的趣味运动会&#xff0c;其中的一个项目是&#xff1a;跳格子。 地上画着一些格子&#xff0c;每个…

这些编程语言你需要了解一下

2022 年最受欢迎的语言 1、Python Python 位居 2022 年最受欢迎的语言榜首&#xff0c;并且鉴于多种原因成为最适合学习的编程语言之一。Python 是一种通用的服务器端编程语言&#xff0c;可用于从简单的脚本和自动化到复杂的 Web 应用程序和人工智能的许多方面。此外&#xf…

电科大离散数学-3-谓词逻辑-1

目录 3.1 谓词的引入 3.1.1 个体词 3.1.2 谓词 3.1.3 复合命题的谓词符号化 3.2 量词的引入 3.2.1 量词 3.2.2 谓词逻辑符号化的两条规则 3.2.3 量词相关的真值确定 3.2.4 谓词翻译和真值 3.2.5 个体域有限的情况 3.3 谓词符号化举例 3.3.1 谓词逻辑符号化示例一 …

gdb调试的插件安装——gef插件

以下博客中的链接都是大佬们提供的链接 gef插件源地址&#xff1a;https://github.com/hugsy/ 根据要求&#xff1a; gdb必须得8.0以上&#xff0c;python得3.6以上&#xff0c;但是一般裸机的gdb都是7.2&#xff0c;python是2.7。我们需要下载更高版本的gdb和python 先将系统…

15、volume

Volume 的生命周期独立于容器&#xff0c;Pod 中的容器可能被销毁和重建&#xff0c;但 Volume 会被保留。本质上&#xff0c;Kubernetes Volume 是一个目录。当Volume被mount到Pod&#xff0c;Pod中的所有容器都可以访问这个Volume。Kubernetes Volume 也支持多种 backend 类型…

菊风入选2022·爱分析保险科技厂商报告,为保险行业数智化转型赋能

随着数字化转型加速及大数据、人工智能等技术的日益精进&#xff0c;保险公司纷纷布局互联网赛道&#xff0c;采取“保险”与“科技”相结合的双引擎战略&#xff0c;赋予客户更快“速度”更暖“温度”的服务体验。可以说&#xff0c;保险科技作为保险和科技融合创新的成果与生…

如何给视频加水印标记?分享三个好用方法给你

现在给视频加水印已经不再单单是起到一个防盗的作用了&#xff0c;还可以是标明视频的出处或者著作权&#xff0c;甚至是打广告等作用&#xff0c;尤其是要上传到一些视频网站的视频&#xff0c;更应该打上自己专属的水印。那你们知道怎么给视频加水印吗&#xff1f;还不知道的…

Git commit校验工具commitlint的配置与使用

前端环境要求 node&#xff1a; 16.x npm&#xff1a; 8.x Tip&#xff1a;npm版本须大于等于 7.24.2&#xff0c;过低的话可能会导致下面有的命令无法使用&#xff0c;需要手动在 package.json 中自行设置。 工具 husky 操作 git 钩子的工具 commitlint commit 信息校验工…

[附源码]java毕业设计农贸产品交易系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【freeRTOS】操作系统之六-低功耗模式

六&#xff0c;低功耗模式 本章节为大家讲解 FreeRTOS 本身支持的低功耗模式 tickless 实现方法&#xff0c;tickless 低功耗机制是当前小型 RTOS 所采用的通用低功耗方法&#xff0c;比如 embOS&#xff0c;RTX 和 uCOS-III&#xff08;类似方法&#xff09;都有这种机制。ti…

深度学习 Day 19——数据增强

深度学习 Day 19——数据增强 文章目录深度学习 Day 19——数据增强一、前言二、我的环境三、前期工作1、导入依赖项并设置GPU2、加载数据3、配置数据集并进行归一化处理4、可视化数据四、数据增强五、数据增强方式1、将其签入model中2、在Dataset数据集中进行数据增强六、编译…

【金融】经济崛起之中的东南亚

由于全球范围内的重大危机事件&#xff0c;经济贸易摩擦加剧&#xff0c;地区局势动荡不安&#xff0c;全世界主要经济体的经济发展都受到了极大的冲击&#xff0c;但东南亚地区却在这一全球衰退的背景之下给出了即为亮眼的经济表现。东盟国家近年来保持着较高的经济增速&#…

792. 匹配子序列的单词数 : 常规预处理优化匹配过程

题目描述 这是 LeetCode 上的 792. 匹配子序列的单词数 &#xff0c;难度为 中等。 Tag : 「二分」、「哈希表」 给定字符串 s 和字符串数组 words, 返回 words[i] 中是 s 的子序列的单词个数 。 字符串的 子序列 是从原始字符串中生成的新字符串&#xff0c;可以从中删去…

初学者设计PCB,如何检查光绘文件的断头线

设计一款完整的PCB线路板&#xff0c;需要经过很多个繁琐而且复杂的工序。一般主要包括明确产品需求、硬件系统设计、器件选型、PCB绘制、PCB生产打样、焊接调试等步骤。 一般设计师都会有自己积累的设计质量检查清单&#xff0c;其中的条目部分来源于公司或部门的规范、另一部…

Linux开发工具VI/VIM

Linux开发工具VI/VIM 文章目录Linux开发工具VI/VIM一、Linux 软件包管理器 yum语法安装和卸载sl&#xff08;小火车跑动&#xff09;软件包二、编辑器VI/VIM1.基本介绍2.基础使用接下来介绍vim使用正常模式命令集末行模式命令集三、VIM优化总结一、Linux 软件包管理器 yum yum…