1*1卷积核的作用及其应用举例

2023-11-07

1.降维和升维

通过使用 1x1 卷积核,可以改变输入张量的通道数。当输入张量的通道数较大时,使用 1x1 卷积核进行卷积操作可以将通道数减小,从而降低模型的计算复杂度。相反,如果需要增加通道数,也可以使用 1x1 卷积核进行升维操作。

import torch
import torch.nn as nn

# 降维示例
c_in = 64  # 输入通道数
c_out = 32  # 输出通道数
conv = nn.Conv2d(c_in, c_out, kernel_size=1)  # 使用1x1卷积核进行降维
x = torch.randn(1, c_in, 16, 16)  # 输入张量
output = conv(x)  # 降维后的输出张量
print(output.shape)  # 输出: torch.Size([1, 32, 16, 16])

# 升维示例
c_in = 32  # 输入通道数
c_out = 64  # 输出通道数
conv = nn.Conv2d(c_in, c_out, kernel_size=1)  # 使用1x1卷积核进行升维
x = torch.randn(1, c_in, 16, 16)  # 输入张量
output = conv(x)  # 升维后的输出张量
print(output.shape)  # 输出: torch.Size([1, 64, 16, 16])

2.特征映射的线性变换

1x1 卷积核可以对特征映射进行线性变换,通过学习卷积核的权重和偏置,可以对输入特征进行适当的组合和变换。也就是在深度学习中,通过1x1卷积核进行特征映射的线性变换可以帮助模型学习更丰富的特征表示。通过调整1x1卷积核的权重和偏置,可以对输入特征进行组合和变换,以提取更具有表征性的特征。

3.实现跨通道的交互和信息整合

通过在不同通道之间应用 1x1 卷积核,可以实现特征融合和信息交互。1x1 卷积核可以对不同特征图的特征进行加权融合,从而促进特征之间的信息传递和交互。

import torch
import torch.nn as nn

# 定义输入特征图
x1 = torch.randn(1, 64, 16, 16)  # 第一个输入特征图
x2 = torch.randn(1, 64, 16, 16)  # 第二个输入特征图

# 使用1x1卷积核进行特征融合和信息交互
conv1 = nn.Conv2d(64, 32, kernel_size=1)  # 第一个1x1卷积核 特征融合
conv2 = nn.Conv2d(64, 32, kernel_size=1)  # 第二个1x1卷积核 消息交互

# 对特征图进行融合和信息交互
y1 = conv1(x1)  # 第一个1x1卷积核的输出
y2 = conv2(x2)  # 第二个1x1卷积核的输出

# 加权融合两个特征图
alpha = 0.5  # 加权系数
output = alpha * y1 + (1 - alpha) * y2

print(output.shape)  # 输出: torch.Size([1, 32, 16, 16])

4.减少⽹络参数

以下为什么inception模块要先加1*1的卷积再加其他的卷积
在这里插入图片描述

在这里插入图片描述
可以拿以上这个特征图举例对比参数:
1.直接接55的卷积:5519232=153600
2.先用11,再接55:1119232+553232=31744
3.直接使用11:1119232=6144

先用11,再接55是为了更好提取特征的同时减少参数量。直接使用11在只要升维或者降维的时候,它可以提供一个最少的参数量。11卷积核我觉得最重要的作用就是在减少计算量的同时而不损失太多信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1*1卷积核的作用及其应用举例 的相关文章

随机推荐

  • 'DataFrame' object has no attribute 'dtype'

    这个错误消息的意思是 在你的代码中 你试图访问一个Pandas DataFrame对象的 dtype 属性 但该对象并没有这个属性 在Pandas中 DataFrame没有 dtype 属性 你可以使用 dtypes 属性来获取DataFr
  • 在vs2019配置MySQL环境,不需要每次新建一个项目重新配置的方法(图文详解)

    目录 问题 解决方法 问题 上一期讲到怎么在vs2019去配置mysql的编译环境vs2019 c c 配置MySQL数据库的环境 图文详解 守约斯维奇的博客 CSDN博客 这里我们会觉得当建立一个新项目的时候去配置mysql的编译环境非常
  • Qt D-Bus

    介绍 D Bus是为Linux系统开发的进程间通信 IPC 和远程过程调用 RPC 机制 使用统一的通信协议来代替现有的各种IPC解决方案 它允许系统级进程 如 打印机和硬件驱动服务 和普通用户进程进行通信 它使用一个快速的二进制消息传递协
  • 分布式理论-拜占庭将军(译)

    作者 LESLIE LAMPORT ROBERT SHOSTAK and MARSHALL 1982 译者 phylips bmy 出处 http duanple blog 163 com blog static 7097176720112
  • springBoot 拦截器

    声明 代码是JavaEE开发的颠覆者 Spring Boot实战代码中的 我买了这书 并练习 public class DemoInterceptor extends HandlerInterceptorAdapter 1 Override
  • 笔录getResource() 与 getClassLoader().getResource()

    结论 1 Class getResource String path path路径的前缀不是 表示从此类所在的包下取资源文件 path路径的前缀是 则是从ClassPath根下获取资源文件 Class getResource和Class g
  • python seleium b站 自动投币脚本

    主要是给我的投币器做个铺垫 果然软件还是太容易了 难在硬件和外壳好吗 1 把edge的调试端口打开 添加以下参数 C Program Files x86 Microsoft Edge Application msedge exe remot
  • 在express项目里配置ejs模板引擎

    方法1 修改app js view engine setup app set views path join dirname views app set view engine ejs 在views中创建ejs模板文件 方法2 修改app
  • 老年人晕倒的几种原因

    晕倒是一种突发性 短暂性 一过性的意识丧失而昏倒 突然性的晕倒 跟大脑的神经有分不开关系 癫痫 脑供血不足 心脑血管疾病都是引起头晕倒的原因 大脑血液上不来 脑血液突然停止 就会产生放电波头晕的症状 患者会在一时间出现晕倒 很容易引起脑震荡
  • 在conda虚拟环境中的PyQt配置以及相关Pycharm设置

    文章目录 在conda虚拟环境中的PyQt配置 背景环境介绍 PyQt依赖包及PyQt tools的下载 Pycharm进行PyQt的相关配置 结语 在conda虚拟环境中的PyQt配置 作者 下龙湾 背景环境介绍 anaconda安装文件
  • Netty4简单认知

    Channel简介 在Netty中 Channel相当于一个Socket的抽象 它为用户提供了关于Socket状态 是连接还是断开 及对Socket的读 写等操作 每当Netty建立了一个连接 都创建一个与其对应的Channel实例 Cha
  • 各种排序算法的讲解与实现

    排序的分类 1 内部排序 内部排序 在整个排序过程中不需不访问外存便能完成 称这样的排序问题为内部排序 1 1 插入排序 插入排序 将无序序列中的一个或几个记录 插入 到有序的序列中 从而增加记录的有序序列的长度 主要思想是将第一个元素看做
  • 3D重建模的初步了解

    相关学习资料如下 cousera课程 https www coursera org learn robotics perception youtube课程 https www youtube com watch v RDkwklFGMfo
  • 什么是HTTPS

    首先 在参考 Tomcat内核设计剖析 大型网站技术架构 的基础上加了一些个人理解 如有错误或者不全面的地方 还请大家指出 在知道什么是HTTPS之前 我们首先要知道一下什么是HTTP HTTP是超文本传输协议的简称 工作在应用层 传输层基
  • linux上好玩的东西

    Figlet 想知道tmux安装与配置评论加点赞 想要我这个效果吗 安装figlet mac安装 brew install figlet brew 没有的可以看我之前的文章 ma配置 linux ubuntu deepin sudo apt
  • 最易上手的测试用例设计方法

    NO 1 lt lt 测试用例设计方法 gt gt 以下是八种常见的测试用例设计方法 包括等价类 边界值 判定表 因果图 正交实验 状态迁移图 场景法和错误推测 详述如下 等价类划分法 Equivalence Partitioning 策略
  • C++新特性16_写时拷贝(解决浅拷贝在某一个类对象中的资源进行修改,所有引用该资源的对象全部会被修改的问题;解决办法:在所有改变值的地方,重新分配内存,改变的是拷贝的值,而不影响原有对象中共享资源)

    C 新特性16 写时拷贝 1 问题 如果共享资源中的值发生了变化 那么其他使用该共享资源的值如何保持不变 2 解决思路 使用引用计数时 当发生共享资源值改变的时候 需要对其资源进行重新的拷贝 这样改变的是拷贝的值 而不影响原有的对象中的共享
  • 母版页禁用Enter提交表单

    在母版页里面由于使用了form 常常需要禁用enter提交表单 因为内容页或者母版页自身有如果有type submit 的button 当textbox聚焦时 按下enter都会触发表单的默认提交 不论是IE还是firefox 于是需要在o
  • python json串合并

    获取cookie def get login cookies self str1 str2 str3 str4 str5 str6 try 必须要有的cookie字段 var items bizuin data bizuin data ti
  • 1*1卷积核的作用及其应用举例

    1 降维和升维 通过使用 1x1 卷积核 可以改变输入张量的通道数 当输入张量的通道数较大时 使用 1x1 卷积核进行卷积操作可以将通道数减小 从而降低模型的计算复杂度 相反 如果需要增加通道数 也可以使用 1x1 卷积核进行升维操作 im