详解 Pytorch.random

以下torch 方法默认返回的是 CPU torch.Generator

除了以下常用 torch方法以外, 还可以通过 torch.from_numpy(array) 将 Numpy的数组转换为torch张量;

1、torch.rand()

torch.rand(*size		, * , out=None, dtype=None, layout=torch.strided, 
			device=None	, 	  requires_grad=False  ) → Tensor

返回区间 [ 0,1) 上均匀分布的随机数填充的张量。
张量的形状由变量的参数大小定义。

Parameters:

  • size (int…)
    定义输出张量形状的整数序列;可以是可变数量的参数,也可以是像List或tuple这样的集合。

Example:

>>> torch.rand(4)
tensor([ 0.5204,  0.2503,  0.3525,  0.5673])
>>> torch.rand(2, 3)
tensor([[ 0.8237,  0.5781,  0.6879],
        [ 0.3816,  0.7249,  0.0998]])

2、torch.randint()

torch.randint(low=0, high, size, *, generator=None, out=None, dtype=None, 
			  layout=torch.strided, device=None	  , requires_grad=False	) → Tensor

返回在 [ low , high) 之间均匀生成的随机整数填充的张量。
张量的形状由变量的参数大小来定义。

Parameters:

  • low (int, optional)
    从分布中提取的下限整数(可以取到),Default: 0.

  • high (int)
    从分布中提取的上限整数(取不到)。

  • size (tuple)
    定义输出张量形状的元组。

Example:

>>> torch.randint(3, 5, (3,))
tensor([4, 3, 4])

>>> torch.randint(10, (2, 2))
tensor([[0, 2],
        [5, 5]])

>>> torch.randint(3, 10, (2, 2))
tensor([[4, 5],
        [6, 7]])

3、torch.randint_like()

torch.randint_like( input, low=0, high, *, dtype=None, layout=torch.strided, device=None, 
				 	requires_grad=False, memory_format=torch.preserve_format) → Tensor

返回与张量输入相同形状的张量,该张量由在 [low , high) 之间均匀生成的随机整数填充。

Parameters:

  • input (Tensor)
    输入张量的大小将决定输出张量的大小。

  • low (int, optional)
    从分布中提取的下限整数。默认值:0。

  • high (int)
    要从分布中提取的上限整数。


4、torch.randn()

torch.randn(*size		, *, out=None, dtype=None, layout=torch.strided, 
			 device=None, requires_grad=False) → Tensor

从均值为0和方差为1的正态分布中,返回一个由随机数填充的张量(也称为标准正态分布)。

o u t i ∼ N ( 0 , 1 ) out_i∼N(0,1) outiN(0,1)

Parameters:

  • size (int…)
    定义输出张量形状的整数序列。可以是可变数量的参数,也可以是像List或tuple的集合。

Example:

>>> torch.randn(4)
tensor([-2.1436,  0.9966,  2.3426, -0.6366])
>>> torch.randn(2, 3)
tensor([[ 1.5954,  2.8929, -1.0923],
        [ 1.1719, -0.4709, -0.1996]])

5、torch.randn_like

torch.randn_like(input	, *, dtype=None, layout=None, device=None, 
				 requires_grad=False, memory_format=torch.preserve_format) → Tensor

返回与输入相同大小的张量,该张量由均值为0和方差为1的正态分布中的随机数填充。

torch.randn_like(input) 
# 等效于
torch.randn(input.size(), dtype=input.dtype, layout=input.layout, device=input.device).

Parameters:

  • input (Tensor)
    输入张量的大小将决定输出张量的大小。

6、torch.randperm()

torch.randperm(n, *, out=None, dtype=torch.int64, layout=torch.strided, 
			   device=None	 , requires_grad=False) → LongTensor

返回整数从0到n-1的随机排列。

Parameters:

  • n (int)
    上限整数(不包含)

Example:

>>> torch.randperm(4)
tensor([2, 1, 0, 3])

6、torch.poisson()

torch.poisson(input *, generator=None) → Tensor

返回与输入相同大小的张量,从泊松分布中取样的每个元素都具有相应元素在输入中给定的速率参数,即,

o u t i ∼ P o i s s o n ( i n p u t i ) out_i∼Poisson(input_i) outiPoisson(inputi)

Parameters:

  • input (Tensor)
    包含泊松分布速率的输入张量

Example:

>>> rates = torch.rand(4, 4) * 5  # rate parameter between 0 and 5
>>> torch.poisson(rates)
tensor([[9., 1., 3., 5.],
        [8., 6., 6., 0.],
        [0., 4., 5., 3.],
        [2., 1., 4., 2.]])


<think>好的,我现在需要回答用户关于numpy的random.choice函数的问题。用户想了解它的用法和示例。首先,我得回忆一下这个函数的基本参数和常见用法。 首先,random.choice的作用是从数组中生成随机样本。参数包括a、size、replace、p。a可以是数组或整数,如果是整数的话,相当于从np.arange(a)中采样。size是输出的形状,replace控制是否有放回,p是概率分布。 接下来,我应该分步骤解释每个参数的用法,并给出示例。例如,基本用法是从一维数组中选择元素,然后可以演示不放回的情况,指定概率的情况,多维数组的处理,以及当a是整数时的行为。 还要注意用户提到的格式要求,行内数学公式用$...$,独立公式用$$...$$,并且要生成相关问题。同时,引用需要添加在回答末尾,但用户提供的引用似乎与PyTorch相关,可能用不上,不过可能需要检查是否有其他引用需要添加。 然后,我需要确保代码示例正确,使用正确的语法,比如np.random.choice。可能需要展示不同的例子,比如不指定size时返回单个元素,指定size返回数组,replace=False的情况,以及自定义概率分布的情况。 生成的相关问题需要和random.choice相关,比如与其他随机函数对比,设置随机种子,生成多维样本,以及概率分布参数的使用注意事项。这些问题应该能帮助用户进一步探索该函数的不同方面。 最后,检查是否符合所有系统级指令:正确使用LaTeX格式,代码块用反引号,结构清晰,分点说明,自然的中文表达,以及生成相关问题。确保没有遗漏任何用户的要求,比如引用标识,但用户提供的引用可能不相关,所以可能不需要添加。</think>### numpy.random.choice函数详解 numpy.random.choice是用于从给定数组中生成随机样本的核心函数,具有四大核心参数: $$ \text{np.random.choice(a, size=None, replace=True, p=None)} $$ #### 一、基础用法 1. **从一维数组抽样** ```python import numpy as np arr = [10, 20, 30, 40] print(np.random.choice(arr)) # 随机输出数组中的一个元素 print(np.random.choice(arr, size=3)) # 输出形状为(3,)的数组 ``` 2. **无放回抽样** 当$replace=False$时,样本不可重复: ```python print(np.random.choice(arr, size=3, replace=False)) # 输出3个不重复元素 ``` #### 二、概率控制 通过$p$参数指定概率分布: ```python # 设置20被选中的概率为70% print(np.random.choice(arr, p=[0.1, 0.7, 0.1, 0.1])) ``` #### 三、特殊参数处理 1. **输入整数参数** 当$a=5$时,等价于从$[0,1,2,3,4]$抽样: ```python print(np.random.choice(5, size=3)) # 可能输出[2 0 4] ``` 2. **多维数组处理** 始终按展平后的维度抽样: ```python matrix = [[1,2], [3,4]] print(np.random.choice(matrix, size=2)) # 可能从[1,2,3,4]中选择 ``` #### 四、数学原理 该函数基于离散概率分布$P(X=x_i)=p_i$进行抽样,当$replace=True$时,每次抽样为独立事件;当$replace=False$时,构成超几何分布抽样[^1]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ViatorSun

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

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

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

打赏作者

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

抵扣说明:

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

余额充值