pytorch框架--网络方面--卷积原理

卷积使用

# 输入通道数、输出通道数、卷积核大小、步长、补几圈零、
Conv2d(in_channels=3, out_channels=32, kernel_size=(3, 3), stride=1, padding=0),

必填
in_channels 输入通道数
out_channels 输出通道数

选填
kernel_size 卷积核大小
stride 步长
padding 补几圈零
bias=False 是否加偏置

特殊
padding_mode=“zeros”
zeros(常量填充),默认情况是使用0填充,可选择整形int或者tuple元组
reflect(反射填充),以矩阵中的某个行或列为轴,中心对称的padding到最外围。
replicate(复制填充),replicate将矩阵的边缘复制并填充到矩阵的外围
circular(循环填充),从上到下进行无限的重复延伸

深度可分离卷积
groups=in_channels

卷积类别

分为两种:轻量、高精度、
降低模型计算量:分组卷积可分离卷积(深度、空间)
分组卷积: ResNeXt、 ShuffleNet系列
可分离卷积: MobileNet系列

提高模型精度:空洞卷积、多尺度卷积、形变卷积、
空洞卷积:图像语义分割的DeepLab系列
多尺度卷积: Inception系列、注意力模型SKNet
形变卷积: DCN V1、DCN V2、这两篇论文

深度可分离卷积

减少参数与运算量
每个通道都由1个独立的卷积核进行卷积,然后使用(11通道数)贯穿所有的通道进行卷积。反过来也可以
逐层卷积+逐点卷积
在这里插入图片描述

分组卷积

减少参数与运算量
将特征图按照通道分为若干组,每个组由一个独立的卷积核负责卷积。

多尺度卷积

识别大小经常变化的物体(提取不同感受野的特征)
将不同大小的卷积核对同一个特征图进行卷积。

普通卷积原理

import torch
import torch.nn.functional as F
x = torch.tensor([[1, 2, 3, 4, 5],
                  [1, 2, 3, 4, 5],
                  [1, 2, 3, 4, 5],
                  [1, 2, 3, 4, 5],
                  [1, 2, 3, 4, 5]])

y = torch.tensor([[1, 2, 3],
                  [1, 2, 3],
                  [1, 2, 3]])
# 改变维度 参数:数据矩阵,目标大小矩阵
x1 = torch.reshape(x, (1, 1, 5, 5))
y1 = torch.reshape(y, (1, 1, 3, 3))


# 自由指定补几圈零
# 步长默认是1、补几圈零、 
output = F.conv2d(x1, y1, stride=1, padding=1)

# 指定模式
# `padding='same'`表示进行填充,填充的值由算法内部根据卷积核大小计算,目的是让输出尺寸和输入相等;
# `padding='valid'`表示不进行填充,即是 padding=0,只使用有效的窗口位置,这是默认的选项。
output1 = F.conv2d(x1, y1, stride=1, padding="valid")
output2 = F.conv2d(x1, y1, stride=1, padding="same")

print(output)
print(output1)
print(output2)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
01+02+03+01+12+23+01+12+2*3=16
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

默执_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值