在这里插入图片描述

一、Tensor核心概念解析

1.1 什么是Tensor?

Tensor是PyTorch中最基本的数据结构,也是深度学习框架的核心计算单元。我们可以将Tensor理解为多维数组的统一表示,它在PyTorch中的地位相当于NumPy中的ndarray,但具有两个关键增强特性:GPU加速支持自动求导能力
在这里插入图片描述

1.2 为什么需要Tensor?

PyTorch重新设计Tensor而不是直接使用NumPy数组,主要基于两个深度学习的关键需求:

  1. GPU加速:深度学习涉及大量并行计算,GPU拥有数千个核心,非常适合处理Tensor这样的海量数据。Tensor可以轻松在CPU和GPU之间切换,实现计算加速。
  2. 自动求导:神经网络训练的核心是计算梯度。Tensor的requires_grad属性可以标记需要计算梯度的参数,PyTorch的Autograd引擎会自动追踪所有相关运算并计算梯度。

简单公式表示:PyTorch Tensor = NumPy Array + GPU Support + Autograd

二、Tensor的创建与数据类型

2.1 基本创建方式

PyTorch提供了多种创建Tensor的方法,与NumPy的API设计高度一致:

import torch
import numpy as np# 从Python列表直接创建
x = torch.tensor([1, 2, 3, 4])
print(f"从列表创建的Tensor: {x}")# 使用内置函数创建特殊Tensor
zeros = torch.zeros(2, 3)    # 创建2x3的全0Tensor
ones = torch.ones(2, 3)      # 创建2x3的全1Tensor
rand_tensor = torch.rand(2, 3)  # 创建2x3的Tensor,元素来自[0,1)均匀分布
randn_tensor = torch.randn(2, 3) # 创建2x3的Tensor,元素来自标准正态分布
arange_tensor = torch.arange(0, 10, 2) # 类似range,tensor([0, 2, 4, 6, 8])
eye_tensor = torch.eye(3)    # 创建3x3的单位矩阵# 指定数据类型和设备创建
special_tensor = torch.tensor([1, 2, 3], dtype=torch.float32, device='cuda' if torch.cuda.is_available() else 'cpu')

2.2 Tensor数据类型详解

PyTorch Tensor支持多种数据类型,每种类型都有特定的使用场景:

数据类型 对应PyTorch类 说明 常见用途
32位浮点 torch.float32 单精度浮点数 深度学习中最常用的类型
64位浮点 torch.float64 双精度浮点数 高精度数值计算
16位浮点 torch.float16 半精度浮点数 GPU内存紧张时使用
8位无符号整型 torch.uint8 无符号8位整数 图像处理(0-255像素值)
8位有符号整型 torch.int8 有符号8位整数 量化模型
32位整型 torch.int32 32位整数 一般整数运算
64位整型 torch.int64 64位整数 索引和标签(常用)
布尔型 torch.bool 布尔类型 掩码和条件运算
# 数据类型示例
float_tensor = torch.tensor([1.0, 2.0, 3.0], dtype=torch.float32)
int_tensor = torch.tensor([1, 2, 3], dtype=torch.int64)
bool_tensor = torch.tensor([True, False, True], dtype=torch.bool)# 数据类型转换
original = torch.tensor([1, 2, 3])  # 默认int64
converted = original.float()        # 转换为float32
print(f"原始类型: {original.dtype}, 转换后类型: {converted.dtype}")

2.3 特殊Tensor创建方法

除了基本创建方法,PyTorch还提供了多种特殊Tensor的创建函数:

# 创建与现有Tensor相同形状的Tensor
example = torch.randn(3, 4)
zeros_like = torch.zeros_like(example)  # 与example形状相同的全0Tensor
ones_like = torch.ones_like(example)    # 与example形状相同的全1Tensor
rand_like = torch.rand_like(example)    # 与example形状相同的随机Tensor# 创建线性空间Tensor
linear_space = torch.linspace(0, 10, 5)  # tensor([0., 2.5, 5., 7.5, 10.])
log_space = torch.logspace(0, 2, 3)      # tensor([1., 10., 100.])# 创建随机排列
random_perm = torch.randperm(10)         # 0-9的随机排列# 创建对角Tensor
diagonal = torch.diag(torch.tensor([1, 2, 3]))  # 对角线为1,2,3的矩阵

三、Tensor属性详解

3.1 核心属性

每个Tensor都有多个重要属性,用于描述其特征和状态:

# 创建一个示例Tensor
t = torch.randn(2, 3, 4, requires_grad=True)print("形状:", t.shape)        # torch.Size([2, 3, 4])
print("维度数:", t.dim())       # 3
print("元素总数:", t.numel())   # 24
print("数据类型:", t.dtype)     # torch.float32
print("设备:", t.device)       # cpu 或 cuda:0
print("是否需要梯度:", t.requires_grad)  # True
print("是否连续存储:", t.is_contiguous())  # True
print("梯度:", t.grad)         # None (尚未计算梯度)

3.2 设备属性与GPU加速

Tensor的设备属性决定了它在何处进行计算,这对于深度学习性能至关重要:

# 检查GPU可用性
cuda_available = torch.cuda.is_available()
print(f"CUDA可用: {cuda_available}")# 设备无关的代码编写方式
device = torch.device("cuda" if cuda_available else "cpu")
print(f"使用设备: {device}")# 创建时指定设备
x = torch.tensor([1, 2, 3], device=device)# 在设备间移动Tensor
if cuda_available:cpu_tensor = torch.ones(3)gpu_tensor = cpu_tensor.to('cuda')  # 移动到GPUback_to_cpu = gpu_tensor.cpu()      # 移回CPU# 使用.to()方法同时改变设备和数据类型transformed = cpu_tensor.to('cuda', dtype=torch.float64)

3.3 梯度追踪与requires_grad

requires_grad是PyTorch Tensor最独特的属性之一,它开启了自动求导功能:

# 创建需要梯度的Tensor(模型参数)
weights = torch.randn(5, 3, requires_grad=True)
bias = torch.zeros(3, requires_grad=True)# 创建不需要梯度的Tensor(输入数据)
input_data = torch.randn(10, 5, requires_grad=False)# 前向传播(自动构建计算图)
output = input_data @ weights + bias  # 矩阵乘法和加法
loss = output.pow<

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

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

相关文章

2025年我国具身智能产业链全景分析

一、具身智能产业概述与定义 1.1 具身智能的基本概念与内涵 具身智能&#xff08;Embodied Intelligence&#xff09;是指通过物理实体与环境进行交互的智能系统&#xff0c;其核心在于将感知、决策和执行紧密结合&#xff0c;使智能体能够在动态环境中自主感知、学习和执行任务…

VMWare上搭建大数据集群

文章目录1. 采用软件较新版本2. 准备三台虚拟机3. 搭建Hadoop集群3.1 在主节点上配置Hadoop3.1.1 编辑映射文件3.1.2 配置免密登录3.1.3 配置JDK3.1.4 配置Hadoop3.2 从主节点分发到从节点3.3 格式化名称节点3.4 启动Hadoop集群3.5 使用Hadoop WebUI3.6 运行MR应用&#xff1a;…

小迪自用web笔记29

PHP刷新是点击刷新之后原来的图片替换掉&#xff0c;换成新的图片。把inhoneJPG给替换掉如果这个图片是由用户可自定义输入的话&#xff0c;可xss漏洞应用。因为这段代码本质逻辑是点击刷新之后。就执行update方法中的代码&#xff0c;而这个方法中存储的是。截取IMG&#xff0…

WPS--专业pj版

下载 下载链接 解压后 安装 默认安装 激活 输入解压后文件中的激活码

Android Framework智能座舱面试题

目录 1.谈一谈你对binder机制的理解?它为什么是Android中最重要的IPC通信方式?与其他IPC(Socket、共享内存)通信方式相比有哪些优势? 2.如果你需要新提供的车载硬件(比如:一个座椅震动马达)提供系统级别支持应该怎么做? 3.你了解Android与QNX共存方案的实现方式吗?他们…

[CISCN2019 华北赛区 Day1 Web1]Dropbox

TRY 首先上传和删除文件抓包&#xff0c;可以发现upload.php和delete.php&#xff0c;只允许上传gif png jpg后缀的文件。但是上传的文件并没有办法访问&#xff0c;不过可以下载&#xff0c;抓包发现下载的时候请求体是文件名&#xff0c;尝试能不能通过路径穿越获取源码&…

网站管理后台

这里套用的模板为 枫雨在线 在宝塔面板左侧选择菜单栏文件 在根目录下找到www文件夹&#xff0c;点击进入wwwroot文件夹&#xff0c;随后能看到域名文件夹&#xff0c;里面有一下初始内容&#xff0c;可以全部删掉&#xff0c;留下 .user.ini 文件 点击上传&#xff0c;将…

一款免费易用且打造的全功能媒体播放器

zyfun[zyplayer]是一款免费易用且打造的全功能媒体播放器, 致力于提供流畅、高效的跨平台娱乐体验。 注意&#xff1a;播放源请自行查询&#xff0c;或者联系博主。 下载&#xff1a;软件下载 在线体验可暂时使用:https://tv.snowytime.cn 密码为123456 &#x1f389; 功能亮点…

【AI产品思路】AI 原型设计工具横评:产品经理视角下的 v0、Bolt 与 Lovable

本文原创作者&#xff1a;姚瑞南 AI-agent 大模型运营专家/音乐人/野生穿搭model&#xff0c;先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗&#xff1b;多年人工智能行业智能产品运营及大模型落地经验&#xff0c;拥有AI外呼方向国家专利与PMP项目管理证书。&#…

计算机视觉(九):图像轮廓

在计算机视觉&#xff08;Computer Vision, CV&#xff09;中&#xff0c;图像轮廓&#xff08;Image Contour&#xff09;是图像中物体边界的重要表现形式。它不仅能描述物体的形状特征&#xff0c;还能为目标识别、目标检测、图像分割、场景理解、三维重建等任务提供重要依据…

ThinkPHP 6框架常见错误:htmlentities()函数参数类型问题解决

在ThinkPHP 6框架中&#xff0c;htmlentities() 函数是一个常用的PHP函数&#xff0c;用于将字符转换为HTML实体。这个函数通常在输出内容到浏览器时使用&#xff0c;以防止跨站脚本&#xff08;XSS&#xff09;攻击。然而&#xff0c;在使用过程中可能会遇到参数类型问题。错误…

网络通信 IO 模型学习总结基础强化

网络通信概念网络通信因为要处理复杂的物理信号&#xff0c;错误处理等&#xff0c;所以采用了分层设计。为什么要采用分层设计&#xff1f;1. 每层可以独立开发&#xff0c;测试和替换&#xff1b;2. 发生问题也可以快速定位到具体层次&#xff1b;3. 协议标准化&#xff0c;不…

【ComfyUI】深度 ControlNet 深度信息引导生成

今天给大家演示一个结合 ControlNet 深度信息的 ComfyUI 建筑可视化工作流。整个流程通过引入建筑专用的权重模型和深度控制网络&#xff0c;使得生成的建筑图像不仅具备高质量和超写实的细节&#xff0c;还能精确遵循输入图片的结构特征。在这个案例中&#xff0c;模型加载、文…

Python数据可视化科技图表绘制系列教程(六)

目录 散点图1 散点图2 添加线性回归线的散点图 自定义点形状的散点图 不同样式的散点图 抖动散点图 边际图 边缘为直方图的边际图 边缘为箱线图的边际图 曼哈顿图 【声明】&#xff1a;未经版权人书面许可&#xff0c;任何单位或个人不得以任何形式复制、发行、出租、…

spring AI 的简单使用

1. 引入 Spring 官⽅推出的⾸个稳定版⼈⼯智能(AI)集成框架. 旨在帮助 Java/Spring 开发者更便捷地在企业级应⽤中集成 AI 能⼒ (如⼤语⾔模型、机器学习、向量数据库、图像⽣成等)。 它主要提供了以下功能&#xff1a; • ⽀持主要的AI模型提供商, ⽐如 Anthropic、OpenAI、M…

图像去雾:从暗通道先验到可学习融合——一份可跑的 PyTorch 教程

一、为什么“去雾”依然是好课题&#xff1f; 真实需求大&#xff1a;手机拍照、自动驾驶、遥感、监控都要在恶劣天气下成像。 数据集相对干净&#xff1a;与通用目标检测相比&#xff0c;去雾只有“有雾/无雾”一对图像&#xff0c;标注成本低。 传统与深度并存&#xff1a;…

Ubuntu 22.04.1上安装MySQL 8.0及设置root密码

安装MySQL 8.0 在 Ubuntu 22.04.1 系统需要遵循几个明确的步骤&#xff0c;并在安装过程中配置root密码&#xff0c;以下是详细的过程和相关的注意事项。步骤 1: 更新系统 使用终端更新系统软件包列表以确保所有的包是最新的。sudo apt update sudo apt upgrade步骤 2: 安装MyS…

用 content-visibility 即刻提速:那个被你忽略的 CSS 性能杠杆

我有一支技术全面、经验丰富的小型团队&#xff0c;专注高效交付中等规模外包项目&#xff0c;有需要外包项目的可以联系我&#x1f50d; 引言长页面、信息密集、滚动迟滞&#xff1f;**content-visibility** 这项相对较新的 CSS 属性&#xff0c;允许浏览器跳过视口外元素的渲…

字符串(2)

4.字符串的常见函数代码#include <stdio.h> #include <string.h> int main() {char* str1 "abc";char str2[100] "abc";char str3[5] { q,w,e,r ,\0 };printf("---------------------strlen&#xff08;长度&#xff09;-------------…

案例分享|企微智能会话风控系统:为尚丰盈铝业筑牢沟通安全防线

企微智能会话安全风险分析系统是一款基于企业微信原生集成的高性能处理平台&#xff0c;其核心在于通过智能监测和AI风险识别技术&#xff0c;对员工与内外部客户的聊天内容进行多模态分析&#xff08;涵盖文本、图片、语音、视频、文件等多种形式&#xff09;&#xff0c;利用…