pytorch基础学习1

pytorch之二维卷积



一、 卷积简述

   通常对于由多个维度组成的输入信号可以用二维卷积。较为简单的模式是,输入大小为(N,C,H,W),卷积过后的输出为(N,C,H,W)。N是每个批次的样本数目,C是输入样本的通道数目,H是输入样本的高度,W是输入样本的宽。

二、 卷积要点

1 Padding
在Tensorflow中padding有两种属性,一种是valid,这种表示不需要padding操作,假设输入大小为nn,卷积核大小为ff,此时输出大小为(n-f+1);另一种是same,表示输入和输出的大小相同,假设padding的大小为p,此时为了保持输出和输入消息相同p = (f-1)/2,但是此时卷积核要是奇数大小。
2 Stride
stride是指卷积核在输入上移动时每次移动的距离,直接上图来说明。其中按红框来移动的话stride = 1;按蓝色框来移动的话stride = 2。加入stride后,输出的计算有一些变化,假设输入大小为nn,卷积核大小为ff,padding大小为p,stride大小为 s,那么最后的输出大小为:
在这里插入图片描述

3 多通道计算
卷积核除了长宽这两个参数之外还有通道数这个参数,首先需要明确的是单个卷积核的通道数要等于图像的通道数,一般图像是RGB模式的话,卷积核的大小为h* w*3。只有一个卷积核的时候,图像经过卷积计算后的结果通道数是一维的,计算方法也简单粗暴每个通道的对应位置相乘然后,不同通道数之间相加。一般卷积核不止一个,对于多个卷积核的情况也不复杂,直接对每个卷积核进行单个卷积核的操作,然后把它们拼在一起就行了。
输出通道数等于卷积核的数量。
4 dropout和dropconnect提升模型准确率
DropConnect与Dropout不同的地方是在训练神经网络模型过程中,它不是随机的将隐层节点的输出变成0,而是将节点中的每个与其相连的输入权值以1-p的概率变成0
在这里插入图片描述

三、部分参数

class torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True)

stride:步长,控制卷积核每经一次卷积计算后移动的长度;

padding(int or tuple, optional) :填补,输入的每一条边补充0的层对输入的样本数据进行宽高等维度上加零扩大;

dilation(int or tuple, optional):膨胀,对卷积核的核点间的距离进行控制,从而扩大卷积核的视野;

groups: 群组(int, optional) – 从输入通道到输出通道的阻塞连接数,控制输入和输出之间的联接, in_channels and out_channels都能被groups整除。group=1,输出是所有的输入的卷积;group=2,此时相当于有并排的两个卷积层,每个卷积层计算输入通道的一半,并且产生的输出是输出通道的一半,随后将这两个输出连接起来。

参数kernel_size,stride,padding,dilation也可以是一个int的数据,此时卷积height和width值相同;也可以是一个tuple数组,tuple的第一维度表示height的数值,tuple的第二维度表示width的数值;

kerner_size(int or tuple) - 卷积核的尺寸
weight(tensor) - 卷积的权重,大小是(out_channels, in_channels,kernel_size)
bias(tensor) - 卷积的偏置系数,大小是(out_channel)


©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页