提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


pytorch之常用语法

  • 一、时序容器
  • 二、池化
  • max-pooling(平均池化)
  • max-pooling(最大池化)



一、时序容器

class torch.nn.Sequential(* args)
一个时序容器。Modules 会以他们传入的顺序被添加到容器中。当然,也可以传入一个OrderedDict。
容器通常用来创建神经网络一个新的网络层,该网络层里卷积,归一化,激活函数等等都可以自行定义多少个,以什么样的顺序添加进去,就会以什么样的顺序去运行该层。
给写重复代码带来极大的方便,同时使得整个网络层代码变得极为简洁,使代码变得灵活多变。


二、池化

池化使用较多的有两种,平均池化和最大池化。其作用大致如下:
1.减少每层的输出大小
2.降低过拟合
3.减少参数的数量
4.简化整个模型的复杂度
5.提取数据中主要特征

max-pooling(平均池化)

pytorch 广义平均池化 pytorch全局池化_算法


前向传播中,平均池化就是将池化窗口大小里所有元素相加,然后求出平均值,该平均值作为新特征图中的新元素。具体操作如上图所示。偏向于获取的一般是全局特征。反向传播如下。

pytorch 广义平均池化 pytorch全局池化_pytorch_02

class torch.nn.AvgPool2d(kernel_size, stride=None, padding=0, ceil_mode=False, count_include_pad=True)
对信号的输入通道,提供2维的平均池化
如果padding不是0,会在输入的每一边添加相应数目0
参数:

kernel_size(int or tuple) - 池化窗口大小
stride(int or tuple, optional) - max pooling的窗口移动的步长。默认值是kernel_size
padding(int or tuple, optional) - 输入的每一条边补充0的层数
dilation(int or tuple, optional) – 一个控制窗口中元素步幅的参数
ceil_mode - 如果等于True,计算输出信号大小的时候,会使用向上取整,代替默认的向下取整的操作
count_include_pad - 如果等于True,计算平均池化时,将包括padding填充的0
shape:
input: (N,C,H_in,W_in)
output: (N,C,H_out,Wout)

max-pooling(最大池化)

pytorch 广义平均池化 pytorch全局池化_算法_03

前向传播中,新特征图生成是只取池化窗口中元素最大值,这样池化最终获取答偏向于特征图的主要特征。

pytorch 广义平均池化 pytorch全局池化_池化_04


class torch.nn.FractionalMaxPool2d(kernel_size, output_size=None, output_ratio=None, return_indices=False, _random_samples=None)

对输入的信号,提供2维的分数最大化池化操作

参数:

kernel_size(int or tuple) - 最大池化操作时的窗口大小。可以是一个数字(表示KK的窗口),也可以是一个元组(khkw)
output_size - 输出图像的尺寸。可以使用一个tuple指定(oH,oW),也可以使用一个数字oH指定一个oH*oH的输出。
output_ratio – 将输入图像的大小的百分比指定为输出图片的大小,使用一个范围在(0,1)之间的数字指定
return_indices - 默认值False,如果设置为True,会返回输出的索引,索引对 nn.MaxUnpool2d有用。