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

server/2025/2/10 8:39:57/

🌟 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/server/166450.html

相关文章

数据分析如何做EDA

探索性数据分析(EDA,Exploratory Data Analysis)是数据分析过程中至关重要的一步,其目的是通过统计和可视化技术对数据进行初步分析,从而揭示数据的潜在模式、特征和异常值,并为后续的数据预处理、特征工程…

【函数题】6-9 二叉树的遍历

6-9 二叉树的遍历 1 题目原文2 思路解析2.1 层序遍历2.2 先序遍历2.2.1 递归实现2.2.2 使用栈将递归转为迭代2.2.3 Morris 前序遍历 2.3 中序遍历2.3.1 递归实现2.3.2 使用栈将递归转为迭代2.3.3 Morris 中序遍历 2.4 后序遍历2.4.1 递归实现2.4.2 使用栈将递归转为迭代2.4.3 M…

【Git】ssh如何配置gitlab+github

当我们工作项目在gitlab上,又希望同时能更新自己个人的github项目时,可能因为隐私问题,不能使用同一′密钥。就需要在本地电脑上分别配置两次ssh。 1、分别创建ssh key 在用户主目录下,查询是否存在“.ssh”文件: 如…

BFS算法篇——广度优先搜索,探索未知的旅程(上)

文章目录 前言一、BFS的思路二、BFS的C语言实现1. 图的表示2. BFS的实现 三、代码解析四、输出结果五、总结 前言 广度优先搜索(BFS)是一种广泛应用于图论中的算法,常用于寻找最短路径、图的遍历等问题。与深度优先搜索(DFS&…

vite + axios 代理不起作用 404 无效

vite axios 代理不起作用 先看官方示例 export default defineConfig({server: {proxy: {// 字符串简写写法/foo: http://localhost:4567,// 选项写法/api: {target: http://jsonplaceholder.typicode.com,changeOrigin: true,rewrite: (path) > path.replace(/^\/api/, )…

HTML之基本布局div|span

HTML基本布局使用 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"width<device-width>, initial-scale1.0"><title>布局</title> <…

Java 一键将 Word 文档转为 PDF

嘿&#xff0c;朋友们&#xff01;在开发中&#xff0c;经常会碰到需要把 Word 文档转换成 PDF 格式的需求&#xff0c;像生成报告、合同啥的。Java 有不少好用的库能实现这个功能&#xff0c;下面就给大家介绍两种常见的方法&#xff0c;分别使用 Apache POI 和 Docx4J 结合 i…

机器学习中常用的数据预处理方法

1. 数据清洗 方法&#xff1a;处理异常值、重复数据、噪声数据。 异常值处理&#xff1a;通过统计方法&#xff08;如 Z-Score、IQR&#xff09;或可视化检测&#xff0c;选择删除、替换&#xff08;均值/中位数&#xff09;或保留。重复数据&#xff1a;直接删除重复样本。 优…