简要解释什么是Conv1d,Conv2d,Conv3d

文章目录

      • Conv2d
      • Conv1d
      • Conv3d
      • 实战
        • conv1d

解释什么是Conv1d,Conv2d,Conv3d归结为解释什么是1d,2d,3d。

这个是指除去chanel,除去batch_size,你的输入是多少维的。

比如说:

Conv2d

计算机视觉中,手写数字识别,训练的时候数据形状为:(batch_size,1,28,28),除去batch_size,除去chanel,其实(28,28),也就是两维的,所以使用Conv2d,此时卷积核(没有batch_size,参数是共享的)除去chanel,也是二维的。

简要解释什么是Conv1d,Conv2d,Conv3d_第1张图片

Conv1d

自然语言处理中一个句子序列,一维的,所以使用Conv1d,此时卷积核(没有batch_size,参数是共享的)除去chanel,也是一维的。

简要解释什么是Conv1d,Conv2d,Conv3d_第2张图片

Conv3d

这个或许比较难以理解,因为有人会觉得,这个3d是不是没有去掉chanel,去掉不就是2d了吗?本身chanel这个东西你怎么定义都是随便的,这个3d的东西是不是应该有chanel,是根据我们具体问题具体分析的。我们要从感受野,CNN的思想出发,如果你觉得有一个3d的东西是一个整体,不可分割(注意,如果有channel,那么channel之间的操作是独立的,互不影响!),必须一小块体积一小块体积来使用局部卷积,那么这个东西就没有channel,就应当使用Conv3d
简要解释什么是Conv1d,Conv2d,Conv3d_第3张图片

实战

import torch.nn as nn
import torch

conv1d

我们的数据a的shape为[1,2,3],即batch_size=1,“chanel”=2,这个chanel其实可能是自然语言处理中的句子长度seq_len(懂得都懂!)

简要解释什么是Conv1d,Conv2d,Conv3d_第4张图片
定义卷积层。

b=torch.ones(8)
b[0]=2
b[1]=2
b[3]=9
conv1d=nn.Conv1d(2,4,kernel_size=1)
conv1d.weight.data=nn.Parameter(b.view(4,2,1))
conv1d.weight

简要解释什么是Conv1d,Conv2d,Conv3d_第5张图片
上述是4个卷积核。第一个卷积核是[2,2],其有一个专属于这个卷积核的偏置,其将会和我们的数据[2,2],[2,0],[2,2]分别做内积,然后分别加上这个相同的偏置bias,得到含有3个数的向量,其作为第一个通道,然后第二个卷积也是这样做,,从而得到4个通道,每个通道都是3个数的向量。
简要解释什么是Conv1d,Conv2d,Conv3d_第6张图片

你可能感兴趣的:(Pytorch深入理解与实战,卷积神经网络,深度学习)