NJU1healer的个人博客分享 http://blog.sciencenet.cn/u/NJU1healer

博文

Pytorch批量对一化,梯度消失和爆炸

已有 3030 次阅读 2020-10-5 13:57 |个人分类:Pytorch|系统分类:科研笔记

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)【batch,波段数,时序长度

 

      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) 【batch,波段数,影像高(行),影像宽(列)】

      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) 【batch,波段数,,影像高(行),影像宽(列)】

  

      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)

【拓展】

公式与例子

pytorch中批量归一化BatchNorm1d和BatchNorm2d函数

原理

pytorch——nn.BatchNorm1d()

【参考】

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

点滴分享,福泽你我!Add oil!



https://wap.sciencenet.cn/blog-3428464-1253277.html

上一篇:正则表达式re
下一篇:[转载]DataLoader完整的参数
收藏 IP: 36.152.24.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

全部作者的其他最新博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-25 21:31

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部