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

🌟 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)

⚠️ 三、关键注意事项

  1. 种子控制

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

    • 混合设备可能导致错误:
    # 错误示范: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倍以上:
    # 推荐做法
    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随机数生成,为模型训练和实验提供可靠基础!🚀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/69484.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Go语言圣经】第八节:Goroutines和Channels

DeepSeek 说 Goroutines 和 Channels 最近非常流行询问DeepSeek某些相关概念或热点的解释,因此在开始系统性地学习《Go语言圣经》之前,我首先向DeepSeek进行了提问。具体的Prompt如下: 有关Golang当中的Goroutines和Channels,我现…

e2studio开发RA4M2(10)----定时器AGT输出PWM

e2studio开发RA4M2.10--定时器AGT输出PWM 概述视频教学样品申请硬件准备参考程序源码下载选择计时器新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置SWD调试口设置GPIO口配置AGT定时器AGT定时器属性配置初始化AGT启动AGT PWM模块AGTIO 和 AGTO演示 概述 AGT模块是R…

使用PyCharm进行Django项目开发环境搭建

如果在PyCharm中创建Django项目 1. 打开PyCharm,选择新建项目 2.左侧选择Django,并设置项目名称 3.查看项目解释器初始配置 4.新建应用程序 执行以下操作之一: 转到工具| 运行manage.py任务或按CtrlAltR 在打开的manage.pystartapp控制台…

【Java基础】为什么不支持多重继承?方法重载和方法重写之间区别、Exception 和 Error 区别?

Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:Java基础面经 📚本系列文章为个…

bladeX微服务框架如何修改nacos分组

nacos中注册的服务他的分组(分组名称)怎么修改 在org.springblade.common.launch // 指定注册IP PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.ip", "127.0.0.1"); // 指定注册端口 PropsUtil.setProperty(props, &…

大数据项目2a:基于spark的电影推荐和分析系统设计与实现

1、项目目的 本项目的目的是设计并实现一个基于Spark的电影推荐系统,以应对大数据环境下电影推荐服务的挑战。通过整合电影、评分和用户数据集,并利用SparkSql框架进行高效处理,系统能够为用户提供个性化的电影推荐。项目采用多种先进技术&…

机器学习常用包matplotlib篇(四)绘图规范

前言 为了让 Matplotlib 绘图代码更规范、易读,且为后期图形完善预留空间,建议遵循一些规范绘图方法。😉 1.管理图形对象 建议使用 plt.figure() 或者 plt.subplots() 管理完整的图形对象,而非直接用 plt.plot(...) 绘图。这样能…

LVGL4种输入设备详解(触摸、键盘、实体按键、编码器)

lvgl有触摸、键盘、实体按键、编码器四种输入设备 先来分析一下这四种输入设备有什么区别 (1)LV_INDEV_TYPE_POINTER 主要用于触摸屏 用到哪个输入设备保留哪个其他的也是,保留触摸屏输入的任务注册,其它几种种输入任务的注册&…

5G技术解析:从核心概念到关键技术

1. 引言 5G技术的迅猛发展正在重塑我们的生活方式和社会结构。它不仅仅是新一代的移动通信技术,更是一场深刻的技术革命。5G网络正在以其惊人的高速、低延迟和大带宽能力,为智能家居、自动驾驶、工业自动化、远程医疗等另一带来前所未有的可能性。 本文…

背包问题1

核心: // f[i][j] 表示只看前i个物品,总体积是j的情况下,总价值是多少 //res maxx(f[n][]0-v] //f[i][j]: //1 不选第i个物品 f[i][j] f[i-1][j] //2 选第i个物品 f[i][j] f[i-1][j-v[i]] w[i]

Redis | 十大数据类型

文章目录 十大数据类型概述key操作命令数据类型命令及落地运用redis字符串(String)redis列表(List)redis哈希表(Hash)redis集合(Set)redis有序集合(ZSet / SortedSet&…

DeepSeek图解10页PDF

以前一直在关注国内外的一些AI工具,包括文本型、图像类的一些AI实践,最近DeepSeek突然爆火,从互联网收集一些资料与大家一起分享学习。 本章节分享的文件为网上流传的DeepSeek图解10页PDF,免费附件链接给出。 1 本地 1 本地部…

C# OpenCvSharp 部署MOWA:多合一图像扭曲模型

目录 说明 效果 项目 代码 下载 参考 C# OpenCvSharp 部署MOWA:多合一图像扭曲模型 说明 算法模型的paper名称是《MOWA: Multiple-in-One Image Warping Model》 ariv链接 https://arxiv.org/pdf/2404.10716 效果 Stitched Image 翻译成中文意思是&…

vite+vue3搭建前端项目并使用 Bulma 框架

vitevue3搭建前端项目并使用 Bulma 框架 bluma css框架参照。 https://bulma.org.cn/documentation/start/overview/ 1. 创建项目 npm init vitelatest ai-imageneration --template vue选择 vue 和 typescript 作为模板: 2. 安装依赖 npm install npm install…

Spring 6.2.2 @scope(“prototype“)原理

Spring Prototype 原理? 前置准备 创建一个MyService类 Scope("prototype") Service("myService") public class MyService {public String getMessage() {return "Hello, World!";} }创建一个main类,用于debug。 pr…

RabbitMQ 可靠性投递

文章目录 前言一、RabbitMQ自带机制1、生产者发送消息注意1.1、事务(Transactions)1.2、发布确认(Publisher Confirms)1.2.1、同步1.2.2、异步 2、消息路由机制2.1、使用备份交换机(Alternate Exchanges)2.…

【实用技能】如何借助3D文档控件Aspose.3D, 在Java中无缝制作 3D 球体

概述 创建 3D 球体是 3D 图形设计的一个基本方面。无论您是在开发游戏、模拟还是可视化,无缝创建 3D 球体模型的能力都至关重要。Aspose.3D通过提供强大的 3D 图形 SDK 在各个行业中发挥着重要作用。它允许开发人员轻松创建、操作和转换 3D 模型。此 SDK 对于希望将…

C语言基础系列【3】VSCode使用

前面我们提到过VSCode有多么的好用,本文主要介绍如何使用VSCode编译运行C语言代码。 安装 首先去官网(https://code.visualstudio.com/)下载安装包,点击Download for Windows 获取安装包后,一路点击Next就可以。 配…

windows安装WSL完整指南

本文首先介绍WSL,然后一步一步安装WSL及Ubuntu系统,最后讲解如何在两个系统之间访问和共享文件信息。通过学习该完整指南,能帮助你快速安装WSL,解决安装和使用过程中的常见问题。 理解WSL(Windows Subsystem for Linux…

123,【7】 buuctf web [极客大挑战 2019]Secret File

进入靶场 太熟悉了,有种回家的感觉 查看源代码,发现一个紫色文件 点下看看 点secret 信息被隐藏了 要么源代码,要么抓包 源代码没有,抓包 自己点击时只能看到1和3处的文件,点击1后直接跳转3,根本不出…