import torch
import torch.nn as nn
"""
网络参数初始化
1.均匀分布初始化,权重参数初始化从区间均匀随机取值,即在(-1/根号d,1/根号d)均匀分布中生成当前神经元的权重,其中d为每个神经元的输入数量
2.正态分布初始化,随机初始化从均值为0,标准差为1是高斯分布中取样,使用一些很小的值对参数w进行初始化。
3.全0初始化,将神经网络中的所有权重初始化为0
4.全1初始化,将神经网络中所有权重参数初始化为1.
5.固定值初始化,将神经网络中所有权重参数初始化为某个固定的值.
6..kaiming初始化,也叫做HE初始化,HE初始化分为正态分布的HE初始化,均匀分布的HE初始化。
7.xavier初始化,也叫Glorot初始化,该方法的基本思想是各层的激活值和梯度的方差在传播过程中保持一致,它有两种,一种是正态分布的xavier初始化,一种是均匀分布的xavier初始化。
"""
#1.均匀分布初始化
def test01():
linear = nn.Linear(5, 3)
nn.init.uniform_(linear.weight)
print(linear.weight)
#2.固定初始化
def test02():
linear = nn.Linear(5, 3)
nn.init.constant_(linear.weight,5)
print(linear.weight)
# 3.全0初始化
def test03():
linear = nn.Linear(5, 3)
nn.init.zeros_(linear.weight)
print(linear.weight)
# 4.全1初始化
def test04():
linear = nn.Linear(5, 3)
nn.init.ones_(linear.weight)
print(linear.weight)
# 5.随机初始化(正态分布)
def test05():
linear = nn.Linear(5, 3)
nn.init.normal_(linear.weight,mean=0,std=1)
print(linear.weight)
# 6.kaiming初始化
def test06():
#正态分布的kaiming初始化
print("#正态分布的kaiming初始化")
linear = nn.Linear(5, 3)
nn.init.kaiming_normal_(linear.weight)
print(linear.weight)
# 均匀分布的kaiming初始化
print("# 均匀分布的kaiming初始化")
linear = nn.Linear(5, 3)
nn.init.kaiming_uniform_(linear.weight)
print(linear.weight)
# 7.xavier初始化
def test07():
#正态分布的xavier初始化
print("#正态分布的xavier初始化")
linear = nn.Linear(5, 3)
nn.init.xavier_normal_(linear.weight)
print(linear.weight)
# 均匀分布的xavier初始化
print("# 均匀分布的xavier初始化")
linear = nn.Linear(5, 3)
nn.init.xavier_uniform_(linear.weight)
print(linear.weight)
if __name__ == '__main__':
test07()
神经网络基础--网络参数初始化(PyTorch)
于 2024-07-16 19:20:25 首次发布