pytorch中的Conv1d、Conv2d、Conv3d

修改时间:①19/9/11

添加一个文章 (19/9/28)
12种卷积方法(含1x1卷积、转置卷积和深度可分离卷积等)
英文原文地址

一、一维卷积 Conv1d

一维卷积常用于序列模型,自然语言处理领域。
输入输出数据格式:
in/out:(batch_size , channel , length)

torch.nn.modules.conv.Conv1d def __init__(self,
             in_channels: int,
             out_channels: int,
             kernel_size: Any,
             stride: Any = ...,
             padding: Any = ...,
             dilation: Any = ...,
             groups: int = ...,
             bias: bool = ...,
             padding_mode: str = ...) -> None

可以把图片改成[b,c,h*w] 输入到一维卷积中

二、二维卷积 Conv2d

二维卷积常用于计算机视觉、图像处理领域。
输入输出数据格式
input : (batch_size , channel , height , width)
out : (batch_size , channel , height , width)


# Conv2d的规定输入数据格式为(batch, channel, Height, Width)

def __init__(self,
             in_channels: int,
             out_channels: int,
             kernel_size: Any,
             stride: Any = ...,
             padding: Any = ...,
             dilation: Any = ...,
             groups: int = ...,
             bias: bool = ...,
             padding_mode: str = ...) -> None

假设输入数据 x 为 [5,3,28,28] 即 batch_size 为 5 ,通道数为3,长宽都为28;kernel 为 2*2 大小,深度为6

  • in_channels : 输入数据的通道数,如果是图片数据那么就是色彩通道,如彩色图片的 R G B 三个通道。(数据x中的3)
  • out_channels:这个叫法易混淆,这个是指卷积核的通道数,也就是卷积核的深度(kenel 中的深度 6 )
  • kernel_size: 卷积核尺寸 (上面的 2*2) stride : 卷积核移动的步长 padding :输入的每一条边补充0的层数
# 对于例子中的
layer = nn.Conv2d(3,6,kernel_size =2,stride =1,padding =1)

在这里插入图片描述
n o u t = [ n i n + 2 p − k s ] ( 下 采 样 ) + 1 n_{out}=[\frac{n_{in}+2p-k}{s}]_{(下采样)}+1 nout=[snin+2pk]()+1

三、三维卷积 Conv3d


# Conv3d的规定输入数据格式为(batch, channel, Depth, Height, Width)
torch.nn.modules.conv.Conv3d def __init__(self,
             in_channels: int,
             out_channels: int,
             kernel_size: Any,
             stride: Any = ...,
             padding: Any = ...,
             dilation: Any = ...,
             groups: int = ...,
             bias: bool = ...,
             padding_mode: str = ...) -> None


# 参数group的作用为:将输入数据按通道顺序分组, 每组有in_channel/group个通道.(例:group为2时,输入数据前一半通道为一组)
# 	同时, 每组对应的kernel个数, 从原来的out_channel变为outchannel/group.
			# 此处的kernel为三维及以上结构,而filter特指二维层状的过滤器。
# 	原来的情况中, 每个生成的特征图都有所有通道的贡献.
# 	而现在, 特征图仅由其所在group对应的通道卷积构成. 
# 简而言之, group参数的目的就是将原本的大卷积分成多个并联(side by side)的小卷积
# 另: 在in_channel不变的情况下, 当group>1时, kernel总数不变, 而filter总数缩小group倍.
		# 而在filter、kernel总数不变的情况下, group增大, 需要的in_channel按同样比例增大.
 
# 参数dilation的作用为: 控制卷积核元素的间隔大小.具体可搜索“空洞卷积”


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Systemd

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

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

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

打赏作者

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

抵扣说明:

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

余额充值