BatchNorm1d、BatchNorm2d、BatchNorm3d、归一化、激活函数、梯度消失、梯度爆炸

  • Pytorch:BatchNorm1d、BatchNorm2d、BatchNorm3d

  • pytorch常用normalization函数

  • Pytorch常用张量操作以及归一化算法实现

  • 如何区分并记住常见的几种 Normalization 算法

  • 聊一聊深度学习的activation function

  • 谈谈激活函数以零为中心的问题

  • PyTorch经验指南:技巧与陷阱

  • 从反向传播推导到梯度消失and爆炸的原因及解决方案(从DNN到RNN,内附详细反向传播公式推导)

  • 详解深度学习中的梯度消失、爆炸原因及其解决方法

 

	1.nn.BatchNorm1d(num_features)
            1.对小批量(mini-batch)的2d或3d输入进行批标准化(Batch Normalization)操作
            2.num_features:
                    来自期望输入的特征数,该期望输入的大小为'batch_size x num_features [x width]'
                    意思即输入大小的形状可以是'batch_size x num_features' 和 'batch_size x num_features x width' 都可以。
                    (输入输出相同)
                    输入Shape:(N, C)或者(N, C, L)
                    输出Shape:(N, C)或者(N,C,L)
 
              eps:为保证数值稳定性(分母不能趋近或取0),给分母加上的值。默认为1e-5。
              momentum:动态均值和动态方差所使用的动量。默认为0.1。
              affine:一个布尔值,当设为true,给该层添加可学习的仿射变换参数。
            3.在每一个小批量(mini-batch)数据中,计算输入各个维度的均值和标准差。gamma与beta是可学习的大小为C的参数向量(C为输入大小)
              在训练时,该层计算每次输入的均值与方差,并进行移动平均。移动平均默认的动量值为0.1。
              在验证时,训练求得的均值/方差将用于标准化验证数据。 
            4.例子
                    >>> # With Learnable Parameters
                    >>> m = nn.BatchNorm1d(100) #num_features指的是randn(20, 100)中(N, C)的第二维C
                    >>> # Without Learnable Parameters
                    >>> m = nn.BatchNorm1d(100, affine=False)
                    >>> input = autograd.Variable(torch.randn(20, 100)) #输入Shape:(N, C)
                    >>> output = m(input)  #输出Shape:(N, C)
                    
        2.nn.BatchNorm2d(num_features)
            1.对小批量(mini-batch)3d数据组成的4d输入进行批标准化(Batch Normalization)操作
            2.num_features: 
                    来自期望输入的特征数,该期望输入的大小为'batch_size x num_features x height x width'
                    (输入输出相同)
                        输入Shape:(N, C,H, W)
                        输出Shape:(N, C, H, W)
              eps: 为保证数值稳定性(分母不能趋近或取0),给分母加上的值。默认为1e-5。
              momentum: 动态均值和动态方差所使用的动量。默认为0.1。
              affine: 一个布尔值,当设为true,给该层添加可学习的仿射变换参数。
            3.在每一个小批量(mini-batch)数据中,计算输入各个维度的均值和标准差。gamma与beta是可学习的大小为C的参数向量(C为输入大小)
              在训练时,该层计算每次输入的均值与方差,并进行移动平均。移动平均默认的动量值为0.1。
              在验证时,训练求得的均值/方差将用于标准化验证数据。
            4.例子
                >>> # With Learnable Parameters
                >>> m = nn.BatchNorm2d(100) #num_features指的是randn(20, 100, 35, 45)中(N, C,H, W)的第二维C
                >>> # Without Learnable Parameters
                >>> m = nn.BatchNorm2d(100, affine=False)
                >>> input = autograd.Variable(torch.randn(20, 100, 35, 45))  #输入Shape:(N, C,H, W)
                >>> output = m(input)
 
        3.nn.BatchNorm3d(num_features)
            1.对小批量(mini-batch)4d数据组成的5d输入进行批标准化(Batch Normalization)操作
            2.num_features: 
                    来自期望输入的特征数,该期望输入的大小为'batch_size x num_features depth x height x width'
                    (输入输出相同)
                     输入Shape:(N, C,D, H, W)
                     输出Shape:(N, C, D, H, W)
  
              eps: 为保证数值稳定性(分母不能趋近或取0),给分母加上的值。默认为1e-5。
              momentum: 动态均值和动态方差所使用的动量。默认为0.1。
              affine: 一个布尔值,当设为true,给该层添加可学习的仿射变换参数。
 
            3.在每一个小批量(mini-batch)数据中,计算输入各个维度的均值和标准差。gamma与beta是可学习的大小为C的参数向量(C为输入大小)
              在训练时,该层计算每次输入的均值与方差,并进行移动平均。移动平均默认的动量值为0.1。
              在验证时,训练求得的均值/方差将用于标准化验证数据。
            4.例子
                >>> # With Learnable Parameters
                >>> m = nn.BatchNorm3d(100)  #num_features指的是randn(20, 100, 35, 45, 10)中(N, C, D, H, W)的第二维C
                >>> # Without Learnable Parameters
                >>> m = nn.BatchNorm3d(100, affine=False)  #num_features指的是randn(20, 100, 35, 45, 10)中(N, C, D, H, W)的第二维C
                >>> input = autograd.Variable(torch.randn(20, 100, 35, 45, 10)) #输入Shape:(N, C, D, H, W) 
                >>> output = m(input)
	

 

 

 

你可能感兴趣的:(深度学习)