pytorch中的随机初始化方法

写在前面:

这篇博文是一个pytorch初学者整理的第二篇笔记,关于pytorch中的随机初始化方法及其代码示例的内容,如有不对还请大家批评指正。

注意:

代码中的# In

# In

是输入的代码;

代码中的# Out

# Out

是输出的结果,只是为了方便展示,写在了一起。

目录

1.rand/rand_like, randint

2.randn(正态分布)

(1)N(0,1)标准正态分布

(2)自定义均值和方差

3.full

4.arange/range

5.linspace/logspace

6.ones/zeros/eye


1.rand/rand_like, randint

rand会随机产生0~1之间的数值,均匀采样出来,不包括1;

# In
torch.rand(3, 3) # 3, 3 表示规格大小
# Out
tensor([[0.1489, 0.3039, 0.0103],
       [0.7305, 0.6398, 0.1361],
       [0.0675, 0.8197, 0.0676]])

# In
a = torch.rand(3, 3)
# In
torch.rand_like(a)  # *_like的方法
# Out
tensor([[0.1823, 0.2776, 0.3376],
       [0.2285, 0.7772, 0.9575],
       [0.6914, 0.4166, 0.2171]])

# In
torch.randint(1, 10, [3, 3])  # 1, 10表示采样的区间[min, max);[3, 3]表示规格大小
# Out
tensor([[8, 4, 2],
       [1, 2, 7],
       [3, 6, 2]])
# 注意randint只能采样整数,要想均匀0~10的tensor
# 要用x=10*torch.rand(d1, d2),其中d1, d2表示规格大小

2.randn(正态分布)

(1)N(0,1)标准正态分布

# In
torch.randn(3, 3) # 3, 3 表示规格大小
# Out
tensor([[-0.7416, -1.7052, -0.1960],
       [0.9920, 0.4750, 0.7747],
       [-0.3542, 0.3421, 0.5126]])

(2)自定义均值和方差

# 注意,这种方法要先把打平成一个列表,一维数据,用full产生10个均值都是0的列表,再用arange产生10个等差为0.1的方差列表

# In
torch.normal(mean=torch.full([10], 0), std=torch.arange(1, 0, -0.1))
# Out
tensor([-1.7226, 1.0137, 0.7108, -0.4316, 0.4672, -0.4014, 0.5015, 0.0034, 0.2689, -0.1069])

# 产生的列表在reshape一下即可

3.full

产生同样元素的tensor

# In
torch.full([2, 3], 7)
# Out
tensor([[7., 7., 7.],
      [7., 7., 7.,]])

# In
torch.full([], 7)  # 产生一个标量
# Out
tensor(7.)

# In
torch.full([1], 7)  # 产生一个1维tensor
# Out
tensor([7.])

4.arange/range

生成等差数列(建议使用arange,不要使用range)

# In
torch.arange(0, 10, 2)  # 2代表等差值,产生范围是0~10,但不包含10
# Out
tensor([0, 2, 4, 6, 8])

5.linspace/logspace

注意:

(1)与arange的区别,第三个参数steps表示数量而不是等差值,并且前面的范围包括两个区间的端点值;

(2)logspace的base参数可以设置为2, 10, e等底数,默认为10。

上图第三个例子产生的结果是以10为底数,指数为-1~0进行10等分以后的数值的最终结果。

6.ones/zeros/eye

eye是单位矩阵;

torch.ones(3, 3)  # 3, 3表示规格大小
torch.zeros(3, 3)
torch.eye(3)
torch.ones_like(a)  # *_like的方法

# In
torch.eye(3)
# Out
tensor([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值