『PyTorch』模型

本文详细介绍了使用PyTorch构建深度学习模型的步骤,包括模型创建、网络层介绍、容器使用、参数初始化等内容。涵盖了卷积层、池化层、线性层及各类激活函数的具体应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 模型创建步骤

2. 模型相关——torch.nn

2.1 nn.Parameter

  • 张量的子类,表示可学习的参数,如weight,bias

2.2 nn.Module

  • 所以网络层的基类,管理网络属性
  • 属性:
    • parameters:存储管理nn.Parameter类
    • modules:存储管理nn.Module类
    • buffers:存储管理缓冲属性,如BatchNorm中的running_mean
    • ***_hooks:存储管理钩子函数

2.3 nn.functional

  • 函数具体实现,如卷积,池化,激活函数等

2.4 nn.init

  • 参数初始化方法

3. 容器

3.1 nn.Sequential

  • 按顺序包装多个网络层,个人而言,用的最多

3.2 nn.ModuleList

  • 像python的list一样,包装多个网络层

3.3 nn.ModuleDict

  • 像python的dict一样包装多个网络层

4. 网络层

4.1 卷积层

4.1.1 1d/2d/3d 卷积

  • 卷积维度
    一般情况下,卷积核在几个维度上滑动,就是几维卷积

4.1.2 nn.Conv2d

  • 二维卷积
nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, 
          		padding=0, dilation=1, groups=1, bias=True, padding_mode="zeros")
  • in_channels:输入通道数
  • out_channels:输出通道数,等于卷积核的个数
  • kernel_size:卷积核尺寸
  • stride:步长
  • padding:填充个数
  • dilation:空洞卷积大小,图像分割用
  • groups:分组卷积设置,可能和GoogLeNet的inception模块有关
  • bias:是否使用偏置
  • padding_mode:填充模式

4.1.3 nn.ConvTranspose2d

  • 所谓的转置卷积,用于上采样
nn.ConvTranspose2d(in_channels, out_channels, kernel_size, 
                   stride=1, padding=0, output_padding=0, groups=1,
                   			bias=True, dilation=1, padding_mode="zeros")

4.2 池化层

  • 分为Maxpooling和AveragePooling,以二维池化为例

4.2.1 nn.MaxPool2d

nn.MaxPool2d(kernel_size, stride=Node, padding=0, dilation=1, 
             			return_indices=False, ceil_mode=False)
  • kernel_size:池化核尺寸
  • stride:步长
  • padding:填充
  • dilation:池化间隔大小,类似空洞卷积时的参数
  • return_indices:记录池化像素索引
  • ceil_mode:尺寸向上取整

4.2.2 nn.AvgPool2d

nn.AvgPool2d(kernel_size, stride=Node, padding=0, ceil_mode=False, 
             			count_include_pad=True, divisor_override=None)
  • kernel_size:池化核尺寸
  • stride:步长
  • padding:填充
  • ceil_mode:尺寸向上取整数
  • count_include_pad:填充值用于计算
  • divisor_override:除法因子

4.2.3 nn.MaxUnpool2d

  • 对二维信号进行最大值池化上采样
nn.MaxUnpool2d(kernel_size, stride=Node, padding=0)
  • kernel_size:池化核尺寸
  • stride:步长
  • padding:填充

4.3 线性层

线性层又称全连接层,其每个神经元与上一层所有神经元相连,实现对前一层的线性组合,线性变换

nn.Linear(in_features, out_features, bias=True)
  • in_features:输入结点数
  • out_features:输出结点数
  • bias:是否需要偏置

4.4 激活函数

4.4.1 nn.Sigmoid

  • 输出 ( 0 , 1 ) (0,1) (0,1)

4.4.2 nn.tanh

  • 输出 ( − 1 , 1 ) (-1,1) (1,1)

4.4.3 nn.ReLU

  • Rectified Linear Unit

  • y = m a x { 0 , x } y=max\{0,x\} y=max{0,x}

4.4.4 nn.LeakyReLU

  • y = { a x , x } y=\{ax,x\} y={ax,x}
  • 斜率a作为函数的参数,一般0.1或0.01

4.4.5 nn.PReLU

  • 小于零时有个初始斜率,随着迭代会不断学习更新
  • 函数有个参数init

4.4.6 nn.RReLU

  • 小于零是斜率是均匀分布中随机取的
  • 该方法有2个参数
    • lower:均匀分布下限
    • upper:均匀分布上限
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值