pytorch模型搭建函数整理——model文件

二、torch.nn库

2.1 模块容器——nn.Sequential()

  1. 含义:一个搭建网络模型构架的有序容器,按照传入顺序添加到容器中
  2. 作用:将网络封装成一个整体,自定义自己的网络层
  3. 用法:前向传播时调用forward()方法,模型接收的输入首先被传入nn.Sequential()包含的第一个网络模块中。按照顺序依次计算并传播,直到nn.Sequential()里的最后一个模块输出结果。
  4. 官网例子:
model = nn.Sequential(
          nn.Conv2d(1,20,5),
          nn.ReLU(),
          nn.Conv2d(20,64,5),
          nn.ReLU()
        )

2.2 二维卷积——nn.Conv2d()

  1. 作用:对由多个输入平面组成的输入信号进行二维卷积
  2. 参数:
torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True)
参数名作用
in_channels输入图像通道数
out_channels卷积产生的通道数
kernel_size卷积核尺寸,可以设为1个int型数或者一个(int, int)型的元组。例如(2,3)是高2宽3卷积核
stride卷积步长,默认为1。可以设为1个int型数或者一个(int, int)型的元组。
padding填充操作,控制padding_mode的数目。
padding_modepadding模式,默认为Zero-padding
dilation扩张操作:控制kernel点(卷积核点)的间距,默认值:1。
groupsgroup参数的作用是控制分组卷积,默认不分组,为1组。
bias为真,则在输出中添加一个可学习的偏差。默认:True。

2.3 批量标准化——nn.BatchNorm2d()

参考引用1:详细解读nn.BatchNorm2d——批量标准化操作
参考引用2:nn.BatchNorm2d——批量标准化操作解读

  1. 作用: 对于所有的batch中样本的同一个channel的数据元素进行标准化处理
  2. 算法:
    在这里插入图片描述
  3. 不同阶段的用法:
训练阶段具体方法
训练阶段均值和方差计算方法相同,将所有batch相同通道的值取出来,一块计算均值和方差
测试阶段方法1:做全局计算;每标准化一组数据,都利用计算得到的局部观测值的均值和方差对储存的数据做更新在这里插入图片描述
测试阶段方法2:只计算当前输入数据的均值和方差
  1. 参数:
BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
参数名含义
num_features输入图像的通道数量
eps稳定系数,防止分母出现0
momentum模型均值和方差更新时的参数
affinegamma,beta是否可学。如果设为True,参数通过学习得到;如果设为False,参数是固定值,默认gamma是1,beta是0
track_running_stats代表训练阶段是否更新模型存储的均值和方差,即测试阶段的均值与方差的计算方法采用第一种方法还是第二种方法,true是方法1;false是方法2
  1. 引入BN层的意义:
    1)加快网络模型的收敛速度
    2)遇到梯度消失或者梯度爆炸的问题
    3)加快网络的训练速度

2.4 最大池化层——MaxPool2d()

  1. 作用:对窗口大小内的特征取最大,减小卷积层参数误差造成估计均值的偏移的误差,更多的保留纹理信息
    在这里插入图片描述2. 参数:
MaxPool2d(kernel_size, stride=2, padding)
参数名含义
kernel_size窗口大小
stride窗口移动的步长,默认值是kernel_size
padding边缘填充

2.5 上采样——nn.Upsample()

  1. 主要参数:
torch.nn.Upsample(size=None, scale_factor=None, mode='nearest')
参数含义
size据不同的输入制定输出大小
scale_factor指定输出为输入的多少倍数
mode可使用的上采样算法,有nearest,linear,bilinear,bicubic 和 trilinear;默认使用nearest

2.6 转置卷积上采样——nn.ConvTranspose2d()

参考:反卷积通俗详细解析与nn.ConvTranspose2d重要参数解释

待解决的问题记录:
文献中描述的上采样,使用的是转置卷积;
实际的项目代码中,上采样增加了双线性插值的分支,不理解双线性插值与转置卷积在上采样的区别

在这里插入图片描述


三、torch.Tensor

仅作整理,参考:【PyTorch系例】torch.Tensor详解和常用操作

3.1 定义

torch.Tensor是深度学习中存储和变换数据的主要工具,与Numpy的多维数组非常相似

3.2 创建

  1. 根据数据创建
x = torch.tensor([5.5,3])

四、torch.cat

  1. 定义:将两个张量(tensor)拼接在一起,cat是concatenate的意思,即拼接。
  2. 参数:
import torch
x=torch.cat([x1,x2],dim=)

1)dim=0:按行拼接,x1在上,x2在下
2)dim=1:按列拼接,x1在左,x2在右


五、关于 def forward() 的调用

  1. 定义:在建立模型后,进行神经元网络的前向传播
  2. 规则:当类中有多种方法,但直接通过“对象名(参数)”调用时,pytorch对forword方法赋予了方法名缺省时的优先调用;即,在pytorch下,调用forward方法时,可以不写.forward()。
  3. 例子:
    直接通过“对象名(参数)”调用,默认调用forward方法
import torch.nn as nn

class test(nn.Module):
    def __init__(self,x):
        super(test, self).__init__()
        self.x=x

    def forward(self,y):
        return self.x*y
    
    def name(self,z):
        return self.x+z

if __name__ == "__main__":
    Test=test(2)
    print(Test(3))

运行结果:
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值