🌟 PyTorch随机数生成全解析 | torch.rand()家族函数使用指南 🌟
📌 一、核心函数参数详解
PyTorch提供多种随机数生成函数(注意:无直接torch.random()
函数),以下是常用函数及参数:
1️⃣ torch.rand() - 均匀分布
torch.rand(*size, *, generator=None, dtype=None, device=None, requires_grad=False)
size
:张量维度(必选),如(2,3)dtype
:数据类型,默认torch.float32
device
:CPU/GPU设备requires_grad
:是否启用梯度跟踪
2️⃣ torch.randint() - 整数随机
torch.randint(low, high, size, *, dtype=torch.int64, device=None)
low
:最小值(包含)high
:最大值(不包含)size
:输出形状
3️⃣ torch.randn() - 标准正态分布
torch.randn(*size, *, dtype=None, device=None, requires_grad=False)
🖥️ 二、实战代码示例
示例1:基础用法
# 生成3x3均匀分布矩阵
uniform_tensor = torch.rand(3, 3)
print("均匀分布:\n", uniform_tensor)# 生成1-100的随机整数(形状2x2)
int_tensor = torch.randint(1, 100, (2,2))
print("\n随机整数:\n", int_tensor)# 生成标准正态分布数据
normal_tensor = torch.randn(2, 3)
print("\n正态分布:\n", normal_tensor)
示例2:高级控制
# 指定设备和数据类型
cuda_tensor = torch.rand(3, device='cuda', dtype=torch.float16)# 生成不重复随机排列
perm = torch.randperm(10) # 0-9的随机排列# 带梯度追踪的随机数
grad_tensor = torch.rand(2, requires_grad=True)
⚠️ 三、关键注意事项
-
种子控制
torch.manual_seed(42) # 确保结果可复现
- 在训练前固定种子保证实验可重复性
-
设备一致性
- 混合设备可能导致错误:
# 错误示范:CPU与GPU数据运算 cpu_tensor = torch.rand(3) gpu_tensor = torch.rand(3).cuda() result = cpu_tensor + gpu_tensor # 报错!
-
梯度陷阱
- 默认不追踪梯度,需显式设置
requires_grad=True
- 默认不追踪梯度,需显式设置
-
分布特性
函数 分布范围 常用场景 rand() [0,1)均匀分布 权重初始化 randn() 均值0方差1正态分布 深度学习参数初始化 randint() 离散整数 数据采样 -
性能优化
- 批量生成比循环生成效率高10倍以上:
# 推荐做法 batch_data = torch.rand(1000, 256) # 避免做法 slow_data = [torch.rand(256) for _ in range(1000)]
💡 四、特殊场景处理技巧
1. 安全随机范围控制
# 生成不含0的安全数据
safe_tensor = torch.rand(5) + 1e-6 # 防止除零错误
2. 正态分布参数调整
# 生成均值=5,方差=3的正态分布
custom_normal = 5 + torch.randn(10) * 3**0.5
3. 随机掩码生成
# 生成50%概率的布尔掩码
mask = torch.rand(10) > 0.5
通过掌握这些技巧,你将能精准控制PyTorch随机数生成,为模型训练和实验提供可靠基础!🚀