PyTorch 深度学习笔记(三)PyTorch 张量基础——从零开始掌握 Tensor 系列导读本系列共 6 篇从 PyTorch 框架入门到实战案例带你系统掌握深度学习开发。上一篇PyTorch 优势全解析——为什么科研和工业都爱它一、什么是张量Tensor1.1 张量是 PyTorch 的核心张量是 PyTorch 中最核心的数据抽象可以理解为元素为同一种数据类型的多维矩阵与 NumPy 数组类似但支持 GPU 加速和自动微分以类的形式封装内置丰富的运算和方法1.2 张量的维度阶张量的维度数量称为阶Rank或维数通过ndim属性查看阶数名称示例形状0标量Scalartorch.tensor(5)[]1向量Vectortorch.tensor([1, 2, 3])[3]2矩阵Matrixtorch.tensor([[1,2],[3,4]])[2, 2]3三维张量一张彩色图片[C, H, W][3, 224, 224]4四维张量一个批次图片[B, C, H, W][64, 3, 224, 224]importtorch# 0 阶张量标量x0torch.tensor(2)print(fx0:{x0}, 阶数:{x0.ndim}, 形状:{x0.size()})# 输出x0: 2, 阶数: 0, 形状: torch.Size([])# 1 阶张量向量x1torch.tensor([1,2,3])print(f阶数:{x1.ndim}, 形状:{x1.shape})# 输出阶数: 1, 形状: torch.Size([3])# 2 阶张量矩阵x2torch.tensor([[2,3,4],[5,6,7]])print(f阶数:{x2.ndim}, 形状:{x2.size()})# 输出阶数: 2, 形状: torch.Size([2, 3])1.3 张量的关键属性属性说明示例shape/size()张量形状torch.Size([2, 3])ndim/dim()维度数量2dtype数据类型torch.float32numel()元素总数6device存储设备cpu/cuda:0二、张量的创建方式2.1 从数据创建# 根据指定数据创建张量datatorch.tensor([1,2,3])print(data)# 指定数据类型datatorch.tensor([1,2,3],dtypetorch.float32)print(data.dtype)# torch.float322.2 根据形状创建随机初始化# 创建 2 行 3 列的浮点张量默认 float32datatorch.Tensor(2,3)print(data)# 注意Tensor 大写用于创建空张量# tensor 小写用于从数据创建2.3 创建指定类型的张量# 各类张量创建方式datatorch.IntTensor([2,3])# int32datatorch.LongTensor([2,3])# int64datatorch.FloatTensor([2.5,3])# float32默认datatorch.DoubleTensor([2,3])# float64# 不显示的类型FloatTensor→float32LongTensor→int642.4 线性张量# 固定步长生成 [start, end, step)左闭右开datatorch.arange(0,10,2)print(data)# tensor([0, 2, 4, 6, 8])# 固定元素数生成 [start, end]左闭右闭的等差数列datatorch.linspace(0,9,10)print(data)# tensor([0., 1., 2., ..., 9.])2.5 随机张量 ⭐⭐⭐# 标准正态分布随机数datatorch.randn(2,3)print(data)# 随机整数 [low, high)左闭右开datatorch.randint(low0,high10,size(4,6))print(data)# 设置随机种子保证可复现torch.manual_seed(100)datatorch.randn(2,3)print(随机数种子:,torch.initial_seed())2.6 创建全 0 / 全 1 / 全指定值张量# 全 0 张量datatorch.zeros(3,2)# 根据形状创建全 0复制输入张量的形状basetorch.tensor([3,2])datatorch.zeros_like(base)# 全 1 张量datatorch.ones(3,2)datatorch.ones_like(base)# 全指定值datatorch.full((2,2),10)# 全 10datatorch.full_like(base,20)# 根据 base 的形状全 20易错点torch.zeros(3)→ 默认 float32torch.zeros_like(数据)→ 类型跟着输入走三、张量数据类型转换3.1 张量与 NumPy 互转importnumpyasnpimporttorch# 张量 → NumPy共享内存data_tensortorch.tensor([1,3,4])data_numpydata_tensor.numpy()# ⚠️ 共享内存修改一个另一个也变data_numpy[0]100print(data_tensor)# tensor([100, 3, 4])# 使用 copy 避免共享data_numpydata_tensor.numpy().copy()# NumPy → 张量 data_numpynp.array([1,3,4])# 方式 1共享内存data_tensortorch.from_numpy(data_numpy)# 方式 2不共享内存推荐data_tensortorch.tensor(data_numpy)# 或data_tensortorch.from_numpy(data_numpy).clone()3.2 提取标量值# 只有单元素张量才能用 item()xtorch.tensor([2])print(x.item())# 2xtorch.tensor(22)print(x.item())# 22# 多元素张量不能用 item()xtorch.randint(0,4,(3,2))# print(x.item()) # ❌ 报错3.3 类型转换方法datatorch.full((3,2),10)print(data.dtype)# torch.int64# 方式 1type() 方法datadata.type(torch.float64)# 方式 2简洁方法推荐 ⭐⭐⭐datadata.double()# float64datadata.float()# float32datadata.int()# int32datadata.long()# int64datadata.short()# int16四、张量基础总结操作方法说明从数据创建torch.tensor(data)最常用按形状创建torch.Tensor(m, n)随机初始化指定类型创建torch.FloatTensor()等明确数据类型线性序列torch.arange() / linspace()等差数列随机张量torch.randn() / randint()正态/均匀分布全值张量torch.zeros() / ones() / full()0/1/指定值转 NumPy.numpy()共享内存从 NumPy 转torch.from_numpy() / torch.tensor()后者不共享类型转换.float() / .double() / .int()简洁推荐取标量值.item()仅单元素可用五、下一篇预告PyTorch 深度学习笔记四张量运算与变形——数值计算与索引进阶将详细介绍张量的点乘、矩阵乘法、统计函数、索引操作布尔索引、多维索引以及 reshape、transpose、view 等形状变换操作。如果这篇文章对你有帮助欢迎点赞、收藏、关注你的支持是我持续创作的动力。

相关新闻

最新新闻

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现 【免费下载链接】serenity The Serenity Operating System 🐞 项目地址: https://gitcode.com/GitHub_Trending/se/serenity 导读 本文以 getopt(3) 手册 为核心&a…

2026/9/29 2:52:50
轻量服务器还是ECS?大促云服务器选购与避坑实战指南

轻量服务器还是ECS?大促云服务器选购与避坑实战指南

每年大促节点,群里永远有人在问同一个问题:“38元的轻量服务器到底怎么抢?为什么我每次点进去都是已售罄?68元直购和99元的ECS我到底选哪个?”作为一个常年帮团队和自己采购云服务器的老用户,我太清楚这种纠…

2026/9/29 2:52:51
为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南 【免费下载链接】agents Multi-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity 项目地址:…

2026/9/29 1:29:30
PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署 【免费下载链接】PaddleOCR Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between i…

2026/9/29 1:39:24
Spring源码解析:构造器注入的类型转换与候选匹配机制

Spring源码解析:构造器注入的类型转换与候选匹配机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/28 17:20:49
openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由 【免费下载链接】openai-agents-python A lightweight, powerful framework for multi-agent workflows 项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-pyth…

2026/9/29 2:52:53

日新闻

周新闻