torch 中的 uniform 具体用法
背景
在陈云的书上看到这个:
下面那几个随机函数rand啥的都好理解,就是不知道uniform怎么用,查了官方文档写的太简略了,所以找了下例子,总结一下。常见两种用法。先给用例再给解释。
第一种
import torch
A = torch.Tensor(2,3)
print(A)
A.uniform_(-10,20)
print(A)
效果:
解释:
前置知识点:
- 是
uniform_()
,不是uniform()
!以下划线结尾的是inplace方法。- 什么是inplace方法:将会改变调用者本身值的方法。如
a, b = torch.rand(2,2), torch.rand(2,2)
,如果a.add(b)
,那么a
值不变;如果a.add_(b)
,a
值就会变为a+b
。A.uniform_(-10,20)
将会把A里面的每个值都从[-10, 20]里面重新随机取一次,即在[-10, 20]的随机均匀分布里面取值并重新赋值。torch.Tensor(2,3)
将会创建一个形状为shape(2,3)
的张量,张量值据官方文档说是根据内存残留值确定(注意torch.tensor
和torch.Tensor
是两个东西!!)
连起来看:
就是torch.Tensor(2,3)
创建了一个“形状”,uniform_()再从规定了首尾的均匀分布里面取值重新赋值。
第二种
import torch
A = torch.randn(2,2)
print(A)
A.uniform_(-10,20)
print(A)
效果:
解释
1.torch.randn()
实际上创建了一个Tensor对象。
2. 所以说对于任何的Tensor对象,都能够用.uniform_()
去改变他的值。