【Pytorch函数】PyTorch随机数生成全解析 | torch.rand()家族函数使用指南

news/2025/2/13 16:13:32/

🌟 PyTorch随机数生成全解析 | torch.rand()家族函数使用指南 🌟


📌 一、核心函数参数详解

PyTorch提供多种随机数生成函数(注意:无直接torch.random()函数),以下是常用函数及参数:

1️⃣ torch.rand() - 均匀分布
python">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() - 整数随机
python">torch.randint(low, high, size, *, dtype=torch.int64, device=None)
  • low:最小值(包含)
  • high:最大值(不包含)
  • size:输出形状
3️⃣ torch.randn() - 标准正态分布
python">torch.randn(*size, *, dtype=None, device=None, requires_grad=False)

🖥️ 二、实战代码示例

示例1:基础用法
python"># 生成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:高级控制
python"># 指定设备和数据类型
cuda_tensor = torch.rand(3, device='cuda', dtype=torch.float16)# 生成不重复随机排列
perm = torch.randperm(10)  # 0-9的随机排列# 带梯度追踪的随机数
grad_tensor = torch.rand(2, requires_grad=True)

⚠️ 三、关键注意事项

  1. 种子控制

    python">torch.manual_seed(42)  # 确保结果可复现
    
    • 在训练前固定种子保证实验可重复性
  2. 设备一致性

    • 混合设备可能导致错误:
    python"># 错误示范:CPU与GPU数据运算
    cpu_tensor = torch.rand(3)
    gpu_tensor = torch.rand(3).cuda()
    result = cpu_tensor + gpu_tensor  # 报错!
    
  3. 梯度陷阱

    • 默认不追踪梯度,需显式设置requires_grad=True
  4. 分布特性

    函数分布范围常用场景
    rand()[0,1)均匀分布权重初始化
    randn()均值0方差1正态分布深度学习参数初始化
    randint()离散整数数据采样
  5. 性能优化

    • 批量生成比循环生成效率高10倍以上:
    python"># 推荐做法
    batch_data = torch.rand(1000, 256) # 避免做法
    slow_data = [torch.rand(256) for _ in range(1000)]
    

💡 四、特殊场景处理技巧

1. 安全随机范围控制
python"># 生成不含0的安全数据
safe_tensor = torch.rand(5) + 1e-6  # 防止除零错误
2. 正态分布参数调整
python"># 生成均值=5,方差=3的正态分布
custom_normal = 5 + torch.randn(10) * 3**0.5
3. 随机掩码生成
python"># 生成50%概率的布尔掩码
mask = torch.rand(10) > 0.5

通过掌握这些技巧,你将能精准控制PyTorch随机数生成,为模型训练和实验提供可靠基础!🚀


http://www.ppmy.cn/news/1571746.html

相关文章

CNN-BiLSTM卷积神经网络双向长短期记忆神经网络多变量多步预测,光伏功率预测

代码地址:CNN-BiLSTM卷积神经网络双向长短期记忆神经网络多变量多步预测,光伏功率预测 CNN-BiLSTM卷积神经网络双向长短期记忆神经网络多变量多步预测 一、引言 1.1、研究背景和意义 光伏功率预测在现代电力系统中占有至关重要的地位。随着可再生能源…

电脑变慢、游戏卡顿,你的SSD固态可能快坏了!

电脑用久了,很多人都会感觉速度变慢,开机变慢、文件复制时间变长,甚至莫名其妙的卡顿。你可能怀疑是系统问题,或者内存不够,但往往被忽略的一个关键因素——你的硬盘,可能正在悄悄老化。 硬盘寿命不是永久的…

LVS的NAT及DR模式

DR模式: 原理:负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求数据包的目标MAC地址改成后端真实服务器的MAC地址(R-MAC&a…

408-数据结构

数据结构在学什么? 1.用代码把问题信息化 2.用计算机处理信息 ch1 数据:数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料。 ch2 //假设线性表…

北京青蓝智慧科技: 2025年ITSS IT服务项目经理的转型与挑战

2025年,随着信息技术的持续快速发展,IT服务管理(ITSS)在企业运营中的关键作用将进一步凸显。作为一位资深IT行业分析师,我预测2025年的IT服务经理将面临诸多挑战,同时也将迎来新的发展机遇。 人工智能&…

鸿蒙HarmonyOS NEXT开发:横竖屏切换开发实践

文章目录 一、概述二、窗口旋转说明1、配置module.json5的orientation字段2、调用窗口的setPreferredOrientation方法 四、性能优化1、使用自定义组件冻结2、对图片使用autoResize3、排查一些耗时操作 四、常见场景示例1、视频类应用横竖屏开发2、游戏类应用横屏开发 五、其他常…

C++ 相对的字符串,判断却不相对

一、场景 在做项目的时候,有这样一个场景,根据字符串名称,给对应的变量赋值。传递的字符串跟对比的字符串是一样的,判断的时候却不相等,导致变量未正确附上值。 二、解决 经过查找,发现是字符串编码的问题…

碳纤维复合材料制造的六西格玛管理实践:破解高端制造良率困局的实战密码

碳纤维复合材料制造的六西格玛管理实践:破解高端制造良率困局的实战密码 在全球碳中和与高端制造升级的双重驱动下,碳纤维复合材料行业正经历前爆发式增长。航空航天、新能源汽车、风电叶片等领域对碳纤维产品的性能稳定性提出近乎苛刻的要求&#xff0…