PyTorch学习笔记(三)

PyTorch学习笔记(三)

随机抽样 Random sampling

torch.manual_seed

torch.manual_seed(seed)

设定生成随机数的种子,并返回一个 torch._C.Generator 对象

参数:

  • seed (int or long) – 种子

torch.initial_seed

torch.initial_seed()

返回生成随机数的原始种子值(python long)

torch.get_rng_state

torch.get_rng_state

返回随机生成器状态(ByteTensor)

torch.set_rng_state

torch.set_rng_state(new_state)

设定随机生成器状态

参数:

  • new_state (torch.ByteTensor) – 期望的状态

torch.torch.bernoulli

伯努利分布中抽取二元随机数(0 或者 1)。

输入张量须包含用于抽取上述二元随机值的概率。 因此,输入中的所有值都必须在**[0,1]**区间,即 0 < = i n p u t i < = 1 0<=input_i<=1 0<=inputi<=1

输出张量的第i个元素值, 将会以输入张量的第i个概率值等于1。

返回值将会是与输入相同大小的张量,每个值为0或者1。

参数:

  • input (Tensor) – 输入为伯努利分布的概率值
  • out (Tensor, optional) – 输出张量(可选)
>>> a = torch.Tensor(3, 3).uniform_(0, 1) # generate a uniform random matrix with range [0, 1]
>>> a

 0.7544  0.8140  0.9842
 0.5282  0.0595  0.6445
 0.1925  0.9553  0.9732
[torch.FloatTensor of size 3x3]

>>> torch.bernoulli(a)

 1  1  1
 0  0  1
 0  1  1
[torch.FloatTensor of size 3x3]

>>> a = torch.ones(3, 3) # probability of drawing "1" is 1
>>> torch.bernoulli(a)

 1  1  1
 1  1  1
 1  1  1
[torch.FloatTensor of size 3x3]

>>> a = torch.zeros(3, 3) # probability of drawing "1" is 0
>>> torch.bernoulli(a)

 0  0  0
 0  0  0
 0  0  0
[torch.FloatTensor of size 3x3]

torch.multinomial

torch.multinomial(input, num_samples,replacement=False, out=None) → LongTensor

返回一个张量,每行包含从input相应中定义的多项分布中抽取的num_samples个样本。

作用是对input的每一行做n_samples次取值,输出的张量是每一次取值时input张量对应行的下标。

注意:输入input每行的值不需要总和为1 (这里我们用来做权重),但是必须非负且总和不能为0

当抽取样本时,依次从左到右排列(第一个样本对应第一列)。

如果输入input是一个向量,输出out也是一个相同长度num_samples的向量。如果输入input是有m行的矩阵,输出out是形如m×num_samples的矩阵。

如果参数replacementTrue, 则样本抽取可以重复。否则,一个样本在每行不能被重复抽取。

参数num_samples必须小于input长度(即,input的列数,如果是input是一个矩阵)。

参数:

  • input (Tensor) – 包含概率值的张量
  • num_samples (int) – 抽取的样本数
  • replacement (bool, optional) – 布尔值,决定是否能重复抽取
  • out (Tensor, optional) – 结果张量

例子:

>>> weights = torch.Tensor([0, 10, 3, 0]) # create a Tensor of weights
>>> torch.multinomial(weights, 4, replacement=True)

 1
 2
 1
 2
[torch.LongTensor of size 4]

>>> weights = torch.rand(3, 4)
tensor([[0.9005, 0.8463, 0.6070, 0.4762],
        [0.6458, 0.0261, 0.7618, 0.7244],
        [0.5225, 0.9317, 0.8163, 0.2554]])
>>> torch.multinomial(weights, 2)
tensor([[0, 1],
        [2, 3],
        [3, 0]])

输入是[0,10,3,0],也就是说第0个元素和第3个元素权重都是0,在其他元素被取完之前是不会被取到的。

torch.normal()

torch.normal(means, std, out=None)

返回一个张量,包含从给定参数means,std的离散正态分布中抽取随机数。 均值means是一个张量,包含每个输出元素相关的正态分布的均值。 std是一个张量,包含每个输出元素相关的正态分布的标准差。 均值和标准差的形状不须匹配,但每个张量的元素个数须相同

参数:

  • means (Tensor) – 均值
  • std (Tensor) – 标准差
  • out (Tensor) – 可选的输出张量
torch.normal(means=torch.arange(1, 11), std=torch.arange(1, 0, -0.1)) 1.5104 1.6955 2.4895 4.9185 4.9895 6.9155 7.3683 8.1836 8.7164 9.8916[torch.FloatTensor of size 10]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

没有胡子的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值