在 PyTorch 中,数据分布函数用于生成满足特定概率分布的数据或对数据实行统计操作。这些函数可以在很多使命中提供帮助,比方初始化神经网络的权重、生成随机输入、进行蒙特卡洛模拟和概率建模。
常用的 PyTorch 数据分布函数
torch.rand
- 生成匀称分布在 [0, 1) 之间的浮点随机数。
- 用法:
- data = torch.rand(3, 4) # 生成 3x4 的张量,数值在 [0, 1) 范围内
复制代码 torch.randn
- 生成标准正态分布(均值为 0,标准差为 1)的随机数。
- 用法:
- data = torch.randn(3, 4) # 生成 3x4 的张量,符合标准正态分布
复制代码 torch.randint
- 生成离散匀称分布的整数张量,范围为 [low, high)。
- 用法:
- data = torch.randint(0, 10, (3, 4)) # 生成 3x4 的张量,整数范围在 [0, 10)
复制代码 torch.randperm
- 生成一个从 0 到 n-1 的随机排列(打乱的整数序列)。
- 用法:
- data = torch.randperm(10) # 生成 [0, 1, ..., 9] 的随机排列
复制代码 torch.bernoulli
- 根据给定的概率生成伯努利分布的 0 或 1。
- 用法:
- probs = torch.tensor([0.2, 0.5, 0.8])
- data = torch.bernoulli(probs) # 根据概率生成 0 或 1
复制代码 torch.normal
- 生成正态分布的随机数,可指定均值和标准差。
- 用法:
- mean = torch.zeros(5)
- std = torch.ones(5)
- data = torch.normal(mean, std) # 生成均值为 0,标准差为 1 的正态分布
复制代码 torch.multinomial
- weights = torch.tensor([0.2, 0.3, 0.5])
- data = torch.multinomial(weights, 2, replacement=True) # 有放回采样 2 次
复制代码 torch.distributions 模块
- PyTorch 提供的 torch.distributions 模块包含更多分布函数(如 Normal、Bernoulli 等)。它们可以用来创建概率分布对象,并提供采样、概率盘算、熵等方法。
- 用法示例(以 Normal 分布为例):
- from torch.distributions import Normal
- dist = Normal(torch.tensor([0.0]), torch.tensor([1.0]))
- sample = dist.sample((5,)) # 从正态分布中采样 5 个样本
复制代码 利用场景
- 数据生成:随机初始化神经网络权重、生成随机输入样本等。
- 概率建模:定义分布对象,用于概率模型的构建和推断。
- 模拟和蒙特卡洛方法:实行多次随机采样来模拟体系行为。
- 强化学习:利用采样分布来选择动作或生成探索策略。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |