多通道卷积和卷积参数的理解

news/2024/11/16 14:43:50/文章来源:https://www.cnblogs.com/coder-shane/p/18396834

卷积的具体执行流程不属于本博客的重心。

问题描述

卷积的大致执行流程是卷积核对输入张量进行多项式求和运算。如果输入的张量有多个通道,如RGB三通道,那么卷积又是怎么执行的呢?1X1卷积(记作一维卷积)不能获取到局部特征,那么其存在的意义是什么呢?一维卷积的可学习参数是否就是1个呢?

问题总结:

  1. 多通道张量的卷积流程
  2. 一维卷积的作用
  3. 卷积的可学习参数。权重 = 可学习参数

多通道卷积

流程

如图所示,假设输入的维度为(channels, height, weight) \(\rightarrow\) (3,3,3),卷积核的大小为(1, 1)。

conv_1x1-removebg-preview

如果输入的维度只有1个通道,那么卷积核可以按照一般情况通过多项式求和的方式进行卷积。

但是如果输入是多维呢?同一个卷积核,对多个通道进行卷积,得到多个特征图,然后将各个特征图的各元素对应位置相加。从而得到一个输出特征图。正如图所示,中间的两个卷积核,“分裂”成三个(三个是对应输入数据的通道数)。一个卷积核 \(\rightarrow\) 一个输出特征图

综上所示,可以简单理解为:

  • 卷积核的批次大小(用批次batch形容其实不太准确)与输入的通道数相同
  • 由多个通道卷积得到的多个特征图通过相加“聚合”为一个输出特征图
  • 一个卷积核对应一个输出特征图

这也是为什么pytorch中使用卷积需要指明卷积的输入通道数和输出通道数。torch.nn.Conv2d(in_channels, out_channels, kernel_size)

启发

卷积可以改变输入数据的高、宽、通道数。

既然如此,卷积可以实现以下作用:

  1. 提升/降低通道数。提升通道数有利于提取到更深层次的特征。
  2. 一维卷积不能改变输入数据的高和宽,但是能改变通道数。因此,可以用一维卷积来模拟线性层(全连接层)。因为卷积的参数远小于线性层,所以可以一定程度上提高模型训练/推理速度。

卷积参数

首先,卷积中可学习的参数主要是卷积核内的参数。最开始卷积核内的参数是随机初始化的,通过梯度下降算法,不断对参数进行更新。但是卷积中可学习参数数量 \(\not=\) 卷积核中元素个数(\(height \times width\)

由多通道卷积流程可知,如果输入数据是多通道,那么在卷积的过程中,每个卷积核会“分裂”成通道数个,然后对每一个通道都进行卷积。所以,一个卷积核的参数量为$height \times width \times C_{in} \(。输出通道数量决定卷积核个数,所以**卷积层**的参数量为\)height \times width \times C_{in} \times C_{out}$。

事实上,每一个卷积核会给其输出特征图添加一个偏置(标量,可被更新)。

因此,最终卷积层参数量为:

\[height \times width \times C_{in} \times C_{out} + C_{out} \]

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

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

相关文章

uniapp js 数独小游戏 写死的简单数独demo(优化完成) 数独 4.0

<template><view class="wrap"><view class="timeGame"><text class="time">时间 {{ gameTime }}</text></view><view class="listWrap"><view:class="[listWraps,sdNum == 4? li…

机械臂运动学-变换矩阵

将移动和转动整合在一起进行描述:以映射的方式:

OpenType Layout tables used in font ABCDEE+ are not implemented in PDFBox and will be ignored 问题处理

这行打印 还不是报错,是info级的,但是继续向下执行的话就报错了,报了一个数组越界,是PDFBox源码里的错误,我们也没有办法解决。所以要处理的是这个信息提示的问题,显然是字体缺失导致的, ABCDEE+这个字体在服务器上也是没有的。 在网上找了半天没有这个字体,最后升级了…

GBDT模型 0基础小白也能懂(附代码)

GBDT(Gradient Boosting Decision Tree),全名叫梯度提升决策树,是一种迭代的决策树算法,又叫 MART(Multiple Additive Regression Tree),它通过**构造一组弱的学习器(树),并把多颗决策树的结果累加起来作为最终的预测输出。**该算法将决策树与集成思想进行了有效的结…

二项式定理(二项式展开)

目录引入正题延伸 引入 首先有一个广为人知的结论: \[(a+b)^2=a^2+2ab+b^2 \]那么,如何求 \((a+b)^3\) 呢?手算,如下: \[\begin{aligned} (a+b)^3 &= (a+b)\times(a+b)^2\\ &=(a+b)\times(a^2+2ab+b^2)\\ &=[a\times(a^2+2ab+b^2)]+[b\times(a^2+2ab+b^2)]\\ …

机器视觉检测的速度六大影响因素

物料处理时间 材料处理时间是指待检测材料暴露在图像采集介质前面,以便能够充分聚焦在材料上以获取图像的时间。在工业环境中,材料通常位于装配线或传送带上。相机是固定的或可移动的,放置在装配线的某个点。当材料进入相机的焦点区域时,材料处理时间开始,当材料完全聚焦时…

BigDecimal使用注意的地方

BigDecimal 是 Java 中的一个类,这个相信大家都是知道的。它的作用就是可以表示任意精度的十进制数,BigDecimal 提供了精确的数字运算,适用于需要高精度计算的场景。 一、浮点精度 我们先来看一个例子:compareTo 方法比较中,a.compareTo(b) 返回:-1: a小于b0: a等于b1: a…

2024-09-04:用go语言,给定一个长度为n的数组 happiness,表示每个孩子的幸福值,以及一个正整数k,我们需要从这n个孩子中选出k个孩子。 在筛选过程中,每轮选择一个孩子时,所有尚未选

2024-09-04:用go语言,给定一个长度为n的数组 happiness,表示每个孩子的幸福值,以及一个正整数k,我们需要从这n个孩子中选出k个孩子。 在筛选过程中,每轮选择一个孩子时,所有尚未选中的孩子的幸福值都会减少 1。需要注意的是,幸福值不能降低到负数,只有在其为正数时才能…

初探编译链接原理

这篇博文由一个 bug 引出了编译链接的整个过程。我们可以看到一个源代码文件最终变成一个可执行文件中间经历了编译和链接两个过程,编译过程又分为预编译,编译,和汇编;预编译阶段主要处理#开头的代码,编译则是进行一些语法分析和优化,最终生成汇编代码,而汇编则是生成机…

canvas版本的五子棋

代码:<!Doctype html> <html lang="zh_cn"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>五子棋</title><meta name="Keywords" content="&quo…

vue router路径重复时报错

参考——  https://blog.csdn.net/zz00008888/article/details/119566375 报错: Avoided redundant navigation to current location: "/Eee". NavigationDuplicated: Avoided redundant navigation to current location: "/Eee".在router的index下添加…