• 【torch.nn.init】初始化参数方法解读


    torch.nn.init

    均匀分布

    • 格式

      torch.nn.init.uniform_(tensor, a=0.0, b=1.0)

    • 作用

      从均匀分布 U ( a , b ) U(a,b) U(a,b)中生成值,填充输入的张量或变量。

    • 参数

      • tensor n 维的torch.Tensor
      • a 均匀分布的下界
      • b均匀分布的上界
    • 例子

    w = torch.empty(3, 5)
    nn.init.uniform_(w)
    
    • 1
    • 2

    正态分布

    • 格式

      **torch.nn.init.normal_(tensor, mean=0.0, std=1.0)**

    • 作用

      从给定均值和标准差的正态分布 N ( m e a n , s t d ) N(mean,std) N(mean,std)中生成值,填充输入的张量或变量。

    • 参数

      • tensorn维的torch.Tensor
      • mean 正态分布的均值
      • std 正态分布的标准差
    w = torch.empty(3, 5)
    nn.init.normal_(w)
    
    • 1
    • 2

    常数分布

    • 格式

      torch.nn.init.constant_(tensor, val)

    • 作用

      val的值填充输入的张量或变量

    • 参数

      • tensor n维的torch.Tensor 或 autograd.Variable
      • val 用来填充张量的值
    w = torch.empty(3, 5)
    nn.init.constant_(w, 0.3)
    
    • 1
    • 2

    全1分布

    • 格式

      torch.nn.init.ones_(tensor)

    • 作用

      用全0填充张量

    • 参数

      • tensor n维的torch.Tensor
    • 例子

    w = torch.empty(3, 5)
    nn.init.ones_(w)
    
    • 1
    • 2

    全0分布

    • 格式

      torch.nn.init.zeros_(tensor)

    • 作用

      用全1填充张量

    • 参数

      • tensor n维的torch.Tensor
    • 例子

    w = torch.empty(3, 5)
    nn.init.zeros_(w)
    
    • 1
    • 2

    对角分布

    • 格式

      torch.nn.init.eye_(tensor)

    • 作用

      单位矩阵来填充2维输入张量或变量

    • 参数

      • tensor 2维的torch.Tensor 或 autograd.Variable
    w = torch.empty(3, 5)
    nn.init.eye_(w)
    
    • 1
    • 2

    dirac 分布

    • 格式

      torch.nn.init.dirac_(tensor, groups=1)

    • 作用

      用Dirac δ函数来填充{3, 4, 5}维输入张量或变量。在卷积层尽可能多的保存输入通道特性

    • 参数

      • tensor {3, 4, 5}维的torch.Tensor 或 autograd.Variable
    • 例子

      w = torch.empty(3, 16, 5, 5)
      nn.init.dirac_(w)
      w = torch.empty(3, 24, 5, 5)
      nn.init.dirac_(w, 3)
      
      • 1
      • 2
      • 3
      • 4

    xavier_uniform 分布

    • 格式

      torch.nn.init.xavier_uniform_(tensor, gain=1.0)

    • 作用

      用一个均匀分布生成值,填充输入的张量或变量。

    • 参数

      • tensor n维的torch.Tensor
      • gain 可选的缩放因子
    w = torch.empty(3, 5)
    nn.init.xavier_uniform_(w, gain=nn.init.calculate_gain('relu'))
    
    • 1
    • 2

    xavier_normal 分布

    • 格式

      torch.nn.init.xavier_normal_(tensor, gain=1.0)

    • 作用

      用一个正态分布生成值,填充输入的张量或变量。

    • 参数

      • tensor n维的torch.Tensor
      • gain 可选的缩放因子
    w = torch.empty(3, 5)
    nn.init.xavier_normal_(w)
    
    • 1
    • 2

    kaiming_uniform 分布

    • 格式

      torch.nn.init.kaiming_uniform_(tensor, a=0, mode='fan_in', nonlinearity='leaky_relu')

    • 作用

      用一个均匀分布生成值,填充输入的张量或变量。

    • 参数

      • tensor n维的torch.Tensor或autograd.Variable
      • a 这层之后使用的rectifier的斜率系数(ReLU的默认值为0)
      • mode 可以为“fan_in”(默认)或 “fan_out
        fan_in”保留前向传播时权值方差的量级
        fan_out”保留反向传播时的量级
      • nonlinearity=‘leaky_relu’非线性函数 建议“relu”或“leaky_relu”(默认值)使用。

      w = torch.empty(3, 5)
      nn.init.xavier_normal_(w)

    w = torch.empty(3, 5)
    nn.init.kaiming_uniform_(w, mode='fan_in', nonlinearity='relu')
    
    • 1
    • 2

    kaiming_normal 分布

    • 格式

      torch.nn.init.kaiming_normal_(tensor, a=0, mode='fan_in', nonlinearity='leaky_relu')

    • 作用

      用一个正态分布生成值,填充输入的张量或变量。

    • 参数

      • tensor n维的torch.Tensor或 autograd.Variable
      • a 这层之后使用的rectifier的斜率系数(ReLU的默认值为0)
      • mode 可以为“fan_in”(默认)或 “fan_outfan_in保留前向传播时权值方差的量级fan_out保留反向传播时的量级
    w = torch.empty(3, 5)
    nn.init.kaiming_normal_(w, mode='fan_out', nonlinearity='relu')
    
    • 1
    • 2

    正交矩阵

    • 格式

      torch.nn.init.orthogonal_(tensor, gain=1)

    • 作用

      用一个(半)正交矩阵填充输入张量。

    • 参数

      • tensor 一个n维的tensor,其中 n≥2
      • gain 可选比例系数
    w = torch.empty(3, 5)
    nn.init.orthogonal_(w)
    
    • 1
    • 2

    稀疏矩阵

    • 格式

      torch.nn.init.sparse_(tensor, sparsity, std=0.01)

    • 作用

      将2D输入张量填充为稀疏矩阵,其中非零元素将从正态分布 N ( 0 , 0.01 ) N(0,0.01) N(0,0.01)中提取。

    • 参数

      • **tensor** 一个n维的torch.tensor张量
      • sparsity 每一列中元素的比例设置为零
      • std 用于产生非零值的正态分布的标准差
    w = torch.empty(3, 5)
    nn.init.sparse_(w, sparsity=0.1)
    
    • 1
    • 2

    参考

    torch.nn.init - PyTorch 1.13 documentation

    【细聊】torch.nn.init 初始化_ViatorSun的博客-CSDN博客_nn.init.constant

  • 相关阅读:
    一种模型压缩技术
    OC-NSArray
    JVM Optimization Learning(四)
    转行学软件测试,月薪5k到30k,给IT赶路人一些个人建议...
    前端进击笔记第九节 HTTP 协议和前端开发有什么关系?
    使用python读取csv文件中的数据
    sync.pool 源码学习
    加密与安全_探索签名算法
    【多线程】吊打 ThreadLocal,谈谈FastThreadLocal为啥能这么快?
    java进程内存分析工具-生成core dump文件,并读取分析:jmap, jhat
  • 原文地址:https://blog.csdn.net/zyw2002/article/details/128172005