【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.rhkb.cn/news/14985.html

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

相关文章

模型压缩 --学习记录2

模型压缩 --学习记录2 如何找到更好的权衡方式(模型量化)方法一:寻找更好的 range方法二:寻找更好的 X-fp32(浮点数)方法三:寻找更好的 scale 和 zp方法四:寻找更好的 roundPTQ 后训练量化(离线量化)QAT 量化感知训练(在线量化)量化为什么会带来加速?三、模型稀疏技…

Unity3D仿星露谷物语开发28之切换场景

1、目标 Player可以在Scene1_Farm和Scene2_Field之间自动切换。通过Trigger实现该功能。同时创建一个预设体绑定该功能,这样可以把预设体放到任何场景中,通过配置即可实现Player在Scene之间的自由切换。 2、创建场景切换的工具对象 在Hierarchy中&…

Maven插件—flatten-maven-plugin:工程模块统一版本依赖

文章目录 前言一、认识flatten-maven-plugin插件二、如何使用flatten-maven-plugin插件?未使用flatten-maven-plugin插件之前的情况描述配置flatten-maven-plugin插件步骤1:最外层父模块安装插件&配置版本变量步骤2:各个自模块使用版本使…

并查集题目

并查集题目 聚合一块(蓝桥)合根植物(蓝桥)等式方程的可满足性省份数量 并查集(Union-Find)算法是一个专门针对「动态连通性」的算法。双方向的连通。 模板: class UF {// 连通分量个数private …

【玩转 Postman 接口测试与开发2_019】第15章:利用 Postman 初探 API 性能测试(含实战截图)

《API Testing and Development with Postman》最新第二版封面 文章目录 第十五章 API 接口性能测试1 性能负载的类型2 Postman 负载配置3 Postman 性能测试实战3.1 Fixed 型负载下的性能测试3.2 基于数据驱动的 Postman 接口性能测试 4 性能测试的注意事项 写在前面 终于来到了…

Linux(20)——调度作业

目录 一、调度延迟的用户作业: 1、延迟的用户作业: 2、查看延迟的用户作业: 3、从计划中删除作业: 二、调度周期性用户作业: 1、周期性用户作业: 2、调度周期性用户作业: 3、用户作业格…

在 Visual Studio Code 与微信开发者工具中调试使用 emscripten 基于 C 生成的 WASM 代码

最近在尝试将一些 C/C、Lua 项目挪到 Web 上跑, 接触到了 emscripten. 这里会介绍下在 Visual Studio Code 与微信开发者工具中调试使用 emscripten 基于 C 生成的 WASM 代码 (WebAssembly) 的一些方法. Emscripten 与 WebAssebmly WebAssembly 是一种新的编码方式, 可以在现代…

deepseek API开发简介

1、申请deepseek api key: https://platform.deepseek.com/api_keys创建API Key,并复制Key 2、安装python、pip,然后安装requests pip install requests3、.示例代码 import requests import json# DeepSeek API 地址 API_URL "ht…

uniapp开发微信小程序请求超时设置【亲测有效】

在Hbuilderx中 使用uniapp开发微信小程序时 封装请求方法 请求代码如下 function requestFun(app) {// get请求app.config.globalProperties._get function(path, data, success, fail, complete) {data data || {};data.token uni.getStorageSync(token) || ;uni.request…

【03】 区块链分布式网络

3-1 P2P网络 传统中心化网络由中央服务器保存全量数据。客户端之间无法直接连接,必须通过中央服务器作为桥梁。客户端必须和中央服务器建立连接后访问资源。客户端之间并无连通。 在P2P网络中通过将数据资源分散在网络各个节点中存储以及节点间交互连接&#xff0…

DeepSeek-R1 论文解析——人工智能领域的 RL LLM 新时代?

简介 最近几年,AI领域真是突飞猛进,尤其是大型语言模型(LLM),它们为通用人工智能(AGI)的发展打下了基础。OpenAI的o1模型就是个很好的例子,它用了一种创新的推理时间扩展技术&#…

第七节 文件与流

基本的输入输出(iostream) C标准库提供了一组丰富的输入/输出功能,C的I/O发生在流中,流是字节序列。如果字节流是从设备(键盘、磁盘驱动器、网络连接等)流向内存,叫做输入操作。如果字节流是从…

算法篇——动态规划

核心思想: 将问题分解为重叠的子问题,并储存子问题的解(使用字典、数组或哈希表),避免重复计算,从而提高效率。 题目特点:重叠子问题(特殊地,是最优子结构) …

redis高级数据结构Stream

文章目录 背景stream概述消息 ID消息内容常见操作独立消费创建消费组消费 Stream弊端Stream 消息太多怎么办?消息如果忘记 ACK 会怎样?PEL 如何避免消息丢失?分区 Partition Stream 的高可用总结 背景 为了解决list作为消息队列是无法支持消息多播问题,Redis5.0…

ASP.NET Core WebSocket、SignalR

目录 WebSocket SignalR SignalR的基本使用 WebSocket WebSocket基于TCP协议,支持二进制通信,双工通信。性能和并发能力更强。WebSocket独立于HTTP协议,不过我们一般仍然把WebSocket服务器端部署到Web服务器上,因为可以借助HT…

多路文件IO

一、思维导图

在CT107D单片机综合训练平台上,8个数码管分别单独依次显示0~9的值,然后所有数码管一起同时显示0~F的值,如此往复。

题目:在CT107D单片机综合训练平台上,8个数码管分别单独依次显示0~9的值,然后所有数码管一起同时显示0~F的值,如此往复。 延时函数分析LED首先实现8个数码管单独依次显示0~9的数字所有数码管一起同时显示0~F的值,如此往…

小红书提出新面部视频交换方法DynamicFace,可生成高质量且一致的视频面部图像。

DynamicFace是一种新颖的面部视频交换方法,旨在生成高质量且一致的视频面部图像。该方法结合了扩散模型的强大能力和可插拔的时间层,以解决传统面部交换技术面临的两个主要挑战:在保持源面部身份的同时,准确传递目标面部的运动信息…

2025.2.9机器学习笔记:PINN文献阅读

2025.2.9周报 文献阅读题目信息摘要Abstract创新点网络架构实验结论缺点以及后续展望 文献阅读 题目信息 题目: GPT-PINN:Generative Pre-Trained Physics-Informed Neural Networks toward non-intrusive Meta-learning of parametric PDEs期刊: Fini…

天津三石峰科技——汽车生产厂的设备振动检测项目案例

汽车产线有很多传动设备需要长期在线运行,会出现老化、疲劳、磨损等 问题,为了避免意外停机造成损失,需要加装一些健康监测设备,监测设备运 行状态。天津三石峰科技采用 12 通道振动信号采集卡(下图 1)对…