Pytorch中的主要函数

news2025/3/6 5:56:11

目录

  • 一、torch.manual_seed(seed)
  • 二、torch.cuda.manual_seed(seed)
  • 三、torch.rand(*size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)
  • 四、给大家写一个常用的自动选择电脑cuda 或者cpu 的小技巧
  • 五、torch.version.cuda;torch.backends.cudnn.version();打印cuda、cudnn版本
  • 六、torch.autograd.grad()自动求梯度

我就基本的解释一下吧,!

一、torch.manual_seed(seed)

功能: 用于手动设置 PyTorch 的随机数生成器的种子。当你设置了一个特定的种子后,后续所有依赖随机数生成的操作都会产生可重复的结果。
参数: seed 是一个整数,取值范围通常是 32 位整数范围(-2147483648 到 2147483647)。

示例代码如下:

import torch

# 设置随机种子
torch.manual_seed(42)
# 生成随机张量
tensor1 = torch.randn(2, 2)
print(tensor1)

# 再次设置相同的种子
torch.manual_seed(42)
tensor2 = torch.randn(2, 2)
print(tensor2)

# 验证两次生成的张量是否相同
print(torch.allclose(tensor1, tensor2))  # 输出 True

运行结果如下图:
在这里插入图片描述
(一般还有个torch.seed()但是被弃用了,因为每次都是随机的结果,在科研啥的,一般都手动指定随机数种子,)

先解释一下,什么是随机数种子:
PyTorch 中随机数种子的作用原理
随机数种子就像是随机数生成器的起始状态标识。在 PyTorch 里,随机数生成器是基于特定的算法(如 Mersenne Twister 算法)来工作的。当你设置一个随机数种子时,实际上是将随机数生成器初始化为一个特定的状态。

从这个特定状态开始,随机数生成器会按照固定的算法规则生成一系列随机数。只要种子不变,每次从这个状态开始生成的随机数序列都是相同的。这就保证了在相同的代码和相同的种子设置下,每次运行代码时,所有依赖随机数生成的操作(如初始化模型权重、打乱数据集等)都会产生相同的结果,从而实现实验的可重复性。

例如,在神经网络训练中,我们通常会随机初始化模型的权重。如果不设置随机数种子,每次运行代码时权重的初始化值都不同,那么模型的训练结果也会有差异,不利于实验结果的对比和分析。而通过设置固定的随机数种子,我们可以确保每次运行代码时模型的初始权重是相同的,这样就可以更准确地评估不同训练参数或方法对模型性能的影响。

二、torch.cuda.manual_seed(seed)

功能: 专门为 CUDA 设备(即 GPU)设置随机数种子。如果你的代码在 GPU 上运行,使用这个函数可以确保在 GPU 上的随机操作具有可重复性。
参数: seed 同样是一个整数。

import torch

if torch.cuda.is_available():
    # 为 CUDA 设备设置随机种子
    torch.cuda.manual_seed(42)
    # 在 GPU 上生成随机张量
    device = torch.device("cuda")
    tensor = torch.randn(2, 2).to(device)
    print(tensor)

在这里插入图片描述
注意:没有CUDA的就别跑了,会报错的。

三、torch.rand(*size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)

功能: 生成指定形状的服从均匀分布的随机数张量,取值范围是 [0, 1)。
参数:
*size: 张量的形状,例如 (2, 3) 表示生成一个 2 行 3 列的张量。
out: 可选参数,用于指定输出张量。
dtype: 张量的数据类型。
layout: 张量的布局,一般使用默认的 torch.strided。
device: 张量存储的设备,如 ‘cpu’ 或 ‘cuda’。
requires_grad: 是否需要计算梯度。

import torch

# 生成一个 2 行 3 列的随机张量
random_tensor = torch.rand(2, 3)
print(random_tensor)

示例结果:
在这里插入图片描述

四、给大家写一个常用的自动选择电脑cuda 或者cpu 的小技巧

import torch

# 判断 CUDA 是否可用
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print(f"Using device: {device}")

在这里插入图片描述

五、torch.version.cuda;torch.backends.cudnn.version();打印cuda、cudnn版本

import torch

# 判断 CUDA 是否可用
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

print(f"Using device: {device}")

print(torch.cuda.is_available()) #查看是否有cuda
print(torch.backends.cudnn.is_available()) #查看是否有cudnn
print(torch.version.cuda) #打印cuda的版本
print(torch.backends.cudnn.version()) #打印cudnn的版本

我的运行结果如下:
在这里插入图片描述
大家如果有安装环境有问题的也可以私信我哦~

六、torch.autograd.grad()自动求梯度

torch.autograd.grad()用于求取梯度;
函数原型:
torch.autograd.grad(outputs, inputs, grad_outputs=None, retain_graph=None, create_graph=False, only_inputs=True, allow_unused=False)

outputs:
类型:Tensor 或 Tensor 列表
描述:目标张量,即需要计算梯度的张量。
inputs:
类型:Tensor 或 Tensor 列表
描述:输入张量,用于计算梯度的张量。
grad_outputs(可选):
类型:Tensor 或 Tensor 列表
描述:目标张量对应的梯度。如果outputs 是一个标量,则 grad_outputs 不需要指定;如果 outputs 是一个张量或张量列表,需要指定 grad_outputs 的形状与之对应。
retain_graph(可选,默认值:None):
类型:布尔值
描述:是否保留计算图。在默认情况下,计算图在反向传播后会被释放以节省内存。如果需要多次反向传播同一个计算图,可以设置为 True。
create_graph(可选,默认值:False):
类型:布尔值
描述:是否创建新的计算图。如果设置为 True,梯度计算将被跟踪,生成的梯度张量将保留计算图,从而允许进行高阶导数的计算。
only_inputs(可选,默认值:True):
类型:布尔值
描述:是否只计算输入张量的梯度。如果设置为 True,仅输入张量的梯度会被计算。
allow_unused(可选,默认值:False):
类型:布尔值
描述:是否允许输入张量未被使用。如果某些输入张量未被 outputs 使用,并且没有被计算梯度,则会抛出错误。如果设置为 True,这些未使用的输入张量的梯度将返回为 None。
返回值
类型:Tensor 或 Tensor 列表
返回对应输入张量的梯度。

outputs:是你希望对其进行求导的标量

import torch

# 创建两个张量,requires_grad=True 表示需要计算梯度
x = torch.tensor([1.0, 2.0, 3.0], requires_grad=True)
y = torch.tensor([4.0, 5.0, 6.0], requires_grad=True)

# 定义一个函数 z = x * y
z = x * y

# 使用 torch.autograd.grad() 计算梯度
grad_z_x = torch.autograd.grad(outputs=z, inputs=x, grad_outputs=torch.ones_like(z))

print("梯度 dz/dx:", grad_z_x)

在这里插入图片描述


后面如果还有什么用到的,我会在这继续更新…ing!

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

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

相关文章

景联文科技:以专业标注赋能AI未来,驱动智能时代的精准跃迁

在人工智能技术重塑全球产业格局的今天,高质量训练数据已成为驱动算法进化的核心燃料。作为数据智能服务领域的领军者,景联文科技深耕数据标注行业多年,以全栈式数据解决方案为核心,构建起覆盖数据采集、清洗、标注、质检及算法调…

车载测试:智能座舱测试中多屏联动与语音交互的挑战

智能座舱作为汽车智能化发展的核心,集成了多屏联动和语音交互功能,为驾驶员和乘客提供更便捷的体验。然而,这些功能的测试面临诸多挑战,包括多屏同步性、噪声干扰和复杂场景的处理。本文将详细分析这些挑战,探讨测试方…

深入探索WebGL:解锁网页3D图形的无限可能

深入探索WebGL:解锁网页3D图形的无限可能 引言 。WebGL,作为这一变革中的重要技术,正以其强大的功能和广泛的应用前景,吸引着越来越多的开发者和设计师的关注。本文将深入剖析WebGL的核心原理、关键技术、实践应用,并…

仿mudou库one thread oneloop式并发服务器

项目gitee:仿muduo: 仿muduo 一:项目目的 1.1项目简介 通过咱们实现的⾼并发服务器组件,可以简洁快速的完成⼀个⾼性能的服务器搭建。 并且,通过组件内提供的不同应⽤层协议⽀持,也可以快速完成⼀个⾼性能应⽤服务器…

CentOS 7 aarch64上制作kernel rpm二进制包 —— 筑梦之路

环境说明 centos 7 aarch64 gcc 8.3.1 kernel 5.4.290 准备编译制作 # 安装必要的工具和包yum install rpm-devel rpmdevtools yum groupinstall "Development Tools"yum install ncurses-devel bc elfutils-libelf-devel openssl-devel # 安装gcc 8.3.1# 修改…

vscode 都有哪些大模型编程插件

VSCode 中有许多基于大模型的编程插件,这些插件通过集成人工智能技术,显著提升了开发者的编程效率和体验。以下是一些主要的大模型编程插件及其功能: GitHub Copilot GitHub Copilot 是由 OpenAI 开发的插件,能够根据代码上下文自…

DAIR-V2X-R数据集服务器下载

【官方github链接】https://github.com/ylwhxht/V2X-R 点击并登录 选择并点击下载 浏览器弹窗,右键选择复制下载链接 ------------------------------------服务器下载----------------------------------------- 登录服务器,选在要下载的文件夹复制路…

EasyRTC嵌入式视频通话SDK的跨平台适配,构建web浏览器、Linux、ARM、安卓等终端的低延迟音视频通信

1、技术背景 WebRTC是一项开源项目,旨在通过简单的API为浏览器和移动应用程序提供实时通信(RTC)功能。它允许在无需安装插件或软件的情况下,实现点对点的音频、视频和数据传输。 WebRTC由三个核心组件构成: GetUserM…

DeepSeek×博云AIOS:突破算力桎梏,开启AI普惠新纪元

背景 在全球人工智能技术高速迭代的背景下,算力成本高企、异构资源适配复杂、模型部署效率低下等问题,始终是制约企业AI规模化应用的关键。 DeepSeek以创新技术直击产业痛点,而博云先进算力管理平台AIOS的全面适配,则为这一技术…

DeepSeek能画流程图吗?分享一种我正在使用的DeepSeek画流程图教程

‍‌​​‌‌​‌​‍‌​​​‌‌​​‍‌​​​‌​‌​‍‌​​‌​​‌​‍‌​‌‌‌‌​​‍‌​‌​‌‌​​‍‌​​​‌‌‌‌‍‌​‌‌​‌‌‌‍‌‌​​‌​‌​‍‌​​‌‌​‌‌‍‌​​​‌​‌​‍‌​‌‌‌​‌‌‍‌‌​​‌‌‌‌‍‌​‌‌‌​​​‍‌…

网络安全试题填空题

🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 2018年期末题 1. 分布式防火墙系统组成不包括(D) A.网络防火墙 B.主机防火墙 C.中心管理防火墙 D.传统防火墙 2.下列不是入侵者主要行为模…

个推助力小米米家全场景智能生活体验再升级

当AI如同水电煤一般融入日常,万物互联的图景正从想象照进现实。作为智能家居领域的领跑者,小米米家凭借开放的生态战略,已连接了超8.6亿台设备,构建起全球领先的消费级AIoT平台。如今,小米米家携手个推,通过…

linux服务器根据内核架构下载各种软件依赖插件(例子:Anolis服务器ARM64架构内核Nginx依赖插件下载)

Anolis服务器ARM64架构内核Nginx依赖插件下载 Nginxy依赖包:阿里云镜像站搜索自己的系统如下点击系统,进入详情页面点击下载地址点击对应版本号选择Os继续点击OS点击Packagesctrf搜索资源,依次下载资源,版本建议选最新把下载好的资…

GaussianCity:实时生成城市级数字孪生基底的技术突破

在空间智能领域,如何高效、大规模地生成高质量的3D城市模型一直是一个重大挑战。传统方法如NeRF和3D高斯溅射技术(3D-GS)在效率和规模上存在显著瓶颈。GaussianCity通过创新性的技术方案,成功突破了这些限制,为城市级数字孪生的构建提供了全新路径。 一、核心创新:突破传…

华为配置篇-OSPF基础实验

OSPF 一、简述二、常用命令总结三、实验3.1 OSPF单区域 一、简述 OSPF(开放式最短路径优先协议) 基本定义 全称:Open Shortest Path First 类型:链路状态路由协议(IGP),用于自治系统&#xff…

获取哔站评论

一、文章立论 哔哩哔哩(B站)是当前年轻人十分喜爱的视频分享平台,以其丰富多样的内容、互动性强的社区氛围以及独特的弹幕文化深受用户喜爱。在该平台上,用户不仅可以观看各种类型的视频,如动画、游戏、科技、生活、影…

《当AI生成内容遭遇审核:需求与困境的深度剖析》:此文为AI自动生成

AI 内容审核:数字时代的守门人 在当今数字技术迅猛发展的浪潮中,AI 在内容生成领域取得了令人瞩目的成就,成为了推动创新与变革的核心力量。以 AI 绘画为例,从早期简单粗糙的图像生成,到如今能够创作出细节丰富、风格多…

C#基础及标准控件的使用,附登录案例

C#基础及标准控件的使用,附登录案例 一、项目整体结构1. 项目结构2. 程序结构二、项目的基础操作三、常用的windows标准控件1. 按钮控件的使用2. 项目资源的配置(如图标)3. 文本控件的使用四、WinForm程序生成及运行调试1. Debug调试模式下生成2. Release发布模式下生成3. 程…

61. Three.js案例-彩色旋转立方体创建与材质应用

61. Three.js案例-彩色旋转立方体创建与材质应用 实现效果 知识点 WebGLRenderer(WebGL渲染器) 构造器 WebGLRenderer( parameters : Object ) 参数类型描述antialiasBoolean是否执行抗锯齿(默认false)alphaBoolean是否包含alpha通道(默认false)方法 setSize( width…

爬虫逆向实战小记——解决captcha滑动验证码

注意!!!!某XX网站实例仅作为学习案例,禁止其他个人以及团体做谋利用途!!! IGh0dHBzOi8vY2FwdGNoYS5ydWlqaWUuY29tLmNuLw 第一步: 分析请求网址和响应内容 (1)通过观察,滑…