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

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卷积核我觉得最重要的作用就是在减少计算量的同时而不损失太多信息。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值