原文链接1.通道数描述了一个像素。如果是灰度,那么只需要一个值来描述它,就是单通道。如果用RGB的三种颜色来形容的话,就是三个通道。初始输入图像样本的通道取决于图像类型;卷积运算完成后的out_channels输出取决于卷积核的个数。此时的out_channels也会在下一次卷积中作为卷积核的in_channels;卷积核中的in_channels,上面说的就是前面卷积的out_channels。如果是第一个卷积,就是一个sampleImagechannels。例如,假设有一张6×6×3的图片样本,使用3×3×3的卷积核(filter)进行卷积运算。此时输入图像的通道为3,卷积核中的in_channels与需要卷积的数据(即图像样本,为3)的通道一致。接下来进行卷积运算,将卷积核中的27个数与对应的样本相乘,然后求和得到第一个结果。依次进行,最终结果为4×4。由于只有一个卷积核,所以最终结果为4×4×1,out_channels为1。如下图所示:在实际应用中,使用多个卷积核。如果在这里加上一个卷积核,你会得到一个4×4×2的结果。如下图所示:2.nn.Conv2dclasstorch.nn.Conv2d(in_channels,out_channels,kernel_size,stride=1,padding=0,output_padding=0,groups=1,bias=True)nn.Conv2d的功能is:yes对由多个输入平面组成的输入信号进行二维卷积。输入信号的形式为:$$(N,C_{in},H,W)$$(1)参数说明N:表示batchsize(批处理参数)C_{in}:表示通道数H,W:分别代表特征图的高度和宽度。stride(stepsize):步长,默认为1,可以设置为int类型的数字或(int,int)类型的元组。kernel_size:卷积核的宽度和长度,单个整数或两个整数的列表/元组。单个整数表示每个空间维度的长度相同。padding(fill0):控制补零的个数,padding就是在卷积前加0。Dilation(膨胀):控制核点(卷积核点)的间距;可以在这个github地址查看:Dilatedconvolutionanimationsgroups(卷积核数量):一般来说,卷积的数量是唯一的,但是对于某些情况,可以在1-in_channels的范围内设置卷积核的数量:(2)图像大小卷积一次后,生成图像的大小:(original_size-(kernal_size-1))/stride3.nn.ConvTranspose2dnn.ConvTranspose2d函数是进行反卷积操作(1)输入格式nn.ConvTranspose2d(in_channels,out_channels,kernel_size,stride=1,padding=0,output_padding=0,groups=1,bias=True,dilation=1)(2)参数含义in_channels(int)——通道数输入信号out_channels(int)-卷积产生的通道数kerner_size(intortuple)-卷积核的大小stride(intortuple,optional)-卷积步长,即扩大输入。padding(intortuple,optional)-向每个输入端添加0层,并将高度和宽度增加2*paddingoutput_padding(intortuple,optional)-向输出端添加0层,增加高度和宽度int,optional)–输入通道到输出通道的阻塞连接数bias(bool,optional)–如果bias=True,添加biasdilation(intortuple,optional)–卷积核元素之间的间距学习更多编程知识,请付费关注我的公众号:代码之道
