PyTorch笔记1----------Tensor(张量):基本概念、创建、属性、算数运算

1.Tensor的基本概念

在PyTorch中,张量可以看作一个多维数组。标量是零维的张量,向量是一维的张量,矩阵是二维的张量。

2.Tensor的创建

  • 直接初始化值
python 复制代码
import torch
a = torch.Tensor([[1,2],[3,4]])
print(a)
  • 定义tensor的形状创建,此时值未初始化,是随机值
python 复制代码
import torch
a = torch.Tensor(2,3)
print(a)
  • 值全为1 的tensor
python 复制代码
import torch
a = torch.ones(2,3)
print(a)
  • 对角线值全为1的tensor,其他位置值为0
python 复制代码
import torch
a = torch.eye(2,2)
print(a)
  • 值全为0的tensor
python 复制代码
import torch
a = torch.zeros(2,2)
print(a)
  • 一个和现有tensor形状相同的值全为0的tensor
python 复制代码
import torch
a = torch.Tensor(2,3)
b = torch.zeros_like(a)
print('a:\n',a)
print('b:\n',b)
  • 一个和现有tensor形状相同的值全为1的tensor
python 复制代码
import torch
a = torch.Tensor(2,3)
b = torch.ones_like(a)
print('a:\n',a)
print('b:\n',b)
  • 随机值(0~1)
python 复制代码
import torch
a = torch.rand(2,3)
print(a)
  • 满足正态分布
python 复制代码
import torch
#mean:表示均值,std:表示标准差
a = torch.normal(mean=torch.rand(5),std=torch.rand(5))
print(a)
  • 满足均匀分布
python 复制代码
import torch
# uniform_: 从一个均匀分布-1到1之间随机采样
a = torch.Tensor(2,2).uniform_(-1,1)
print(a)
  • 等差序列
python 复制代码
import torch
a = torch.arange(0,10,2)
print(a)
  • 等间隔的值
python 复制代码
import torch
a = torch.linspace(2,10,3)
print(a)
  • 乱序
python 复制代码
import torch
a = torch.randperm(10)
print(a)

3.Tensor的属性

  • 将张量定义在CPU或GPU
python 复制代码
import torch
dev1 = torch.device("cpu")
dev2 = torch.device("cuda:0")
a = torch.tensor([2,2],device=dev1)
b = torch.tensor([2,2],device=dev2)
print("a:",a)
print("b:",b)
  • 定义类型
python 复制代码
import torch
a = torch.tensor([2,2],dtype=torch.float32)
print("a:",a)
  • 稀疏的张量:torch.sparse_coo_tensor
python 复制代码
import torch
#坐标
i = torch.tensor([[0,1,2],[0,1,2]])
v = torch.tensor([1,2,3])
a = torch.sparse_coo_tensor(i,v,(4,4))
print("a:",a)
  • 稀疏张量转稠密张量
python 复制代码
import torch
#坐标
i = torch.tensor([[0,1,2],[0,1,2]])
v = torch.tensor([1,2,3])
a = torch.sparse_coo_tensor(i,v,(4,4)).to_dense()
print("a:",a)

4.Tensor的算数运算

  • 加法运算
python 复制代码
import torch
a = torch.rand(2,3)  
b = torch.rand(2,3)
print('初始a:\n',a)
print('b:\n',b)
print("a+b:\n",a + b)
print("a.add(b):\n",a.add(b))
print("torch.add(a,b):\n",torch.add(a,b))
print("a.add_(b):\n",a.add_(b))
print("经过a.add_(b)后的a:\n",a)
  • 减法运算
python 复制代码
import torch
a = torch.rand(2,3)  
b = torch.rand(2,3)
print('初始a:\n',a)
print('b:\n',b)
print("a-b:\n",a - b)
print("a.sub(b):\n",a.sub(b))
print("torch.sub(a,b):\n",torch.sub(a,b))
print("a.sub_(b):\n",a.sub_(b))
print("经过a.sub_(b)后的a:\n",a)
  • 乘法运算
python 复制代码
import torch
a = torch.rand(2,3)  
b = torch.rand(2,3)
print('初始a:\n',a)
print('b:\n',b)
print("a*b:\n",a * b)
print("a.mul(b):\n",a.mul(b))
print("torch.mul(a,b):\n",torch.mul(a,b))
print("a.mul_(b):\n",a.mul_(b))
print("经过a.mul_(b)后的a:\n",a)
  • 除法运算
python 复制代码
import torch
a = torch.rand(2,3)  
b = torch.rand(2,3)
print('初始a:\n',a)
print('b:\n',b)
print("a/b:\n",a / b)
print("a.div(b):\n",a.div(b))
print("torch.div(a,b):\n",torch.div(a,b))
print("a.div_(b):\n",a.div_(b))
print("经过a.div_(b)后的a:\n",a)
  • 矩阵运算
python 复制代码
import torch
a = torch.ones(2,1)  
b = torch.ones(1,2)
print('初始a:\n',a)
print('b:\n',b)
print("a@b:\n",a @ b)
print("a.matmul(b):\n",a.matmul(b))
print("torch.matmul(a,b):\n",torch.matmul(a,b))
print("torch.mm(a,b):\n",torch.mm(a,b))
print("a.mm(b):\n",a.mm(b))
  • 高维tensor(两组数据必须保证最后两个维度可以进行矩阵运算)
python 复制代码
import torch
a = torch.ones(1,2,3,4)  
b = torch.ones(1,2,4,3)
print('初始a:\n',a)
print('b:\n',b)
print("a@b:\n",a @ b)
print("a.matmul(b):\n",a.matmul(b))
print("torch.matmul(a,b):\n",torch.matmul(a,b))
  • 指数运算
python 复制代码
import torch
a = torch.tensor([1,2])
print('初始a:\n',a)
print("torch.pow(a,3):\n",torch.pow(a,3))
print("a.pow(3):\n",a.pow(3))
print("a**3:\n",a**3)
print("a.pow_(3):\n",a.pow_(3))
print("经过a.pow_(3)后的a:\n",a)
  • 关于自然函数e的相关运算
python 复制代码
import torch
a = torch.tensor([1,2],dtype=torch.float32)
print('初始a:\n',a)
print("torch.exp(a):\n",torch.exp(a))
print("torch.exp_(a):\n",torch.exp_(a))
print("经过torch.exp_(a)后的a:\n",a)
print("a.exp():\n",a.exp())
print("a.exp_():\n",a.exp_())
print("经过a.exp_()后的a:\n",a)
  • 对数运算
python 复制代码
import torch
a = torch.tensor([10,2],dtype=torch.float32)
print('初始a:\n',a)
#以e为底
print("torch.log(a):\n",torch.log(a))
print("torch.log_(a):\n",torch.log_(a))
print("经过torch.log_(a)后的a:\n",a)
print("a.log():\n",a.log())
print("a.log_():\n",a.log_())
print("经过a.log_()后的a:\n",a)
  • 平方根运算
python 复制代码
import torch
a = torch.tensor([10,2],dtype=torch.float32)
print('初始a:\n',a)
#以e为底
print("torch.sqrt(a):\n",torch.sqrt(a))
print("torch.sqrt_(a):\n",torch.sqrt_(a))
print("经过torch.sqrt_(a)后的a:\n",a)
print("a.sqrt():\n",a.sqrt())
print("a.sqrt_():\n",a.sqrt_())
print("经过a.sqrt_()后的a:\n",a)

知识点为听课总结笔记,课程为B站"2025最新整合!公认B站讲解最强【PyTorch】入门到进阶教程,从环境配置到算法原理再到代码实战逐一解读,比自学效果强得多!":2025最新整合!公认B站讲解最强【PyTorch】入门到进阶教程,从环境配置到算法原理再到代码实战逐一解读,比自学效果强得多!_哔哩哔哩_bilibili

相关推荐
志栋智能2 分钟前
当巡检遇上超自动化:一场运维质量的系统性升级
运维·服务器·网络·数据库·人工智能·机器学习·自动化
有个人神神叨叨5 分钟前
Anthropic Managed Agents 详细介绍
人工智能
跨境卫士—小依7 分钟前
平台流量分发机制变化跨境卖家如何重新获取曝光
大数据·人工智能·跨境电商·亚马逊·营销策略
阿杰学AI8 分钟前
AI核心知识120—大语言模型之 基于人类反馈的强化学习 (简洁且通俗易懂版)
人工智能·ai·语言模型·自然语言处理·aigc·rlhf·基于人类反馈的强化学习
羽师10 分钟前
MoE是什么?
人工智能
亚马逊云开发者14 分钟前
OpenClaw 部署安全第一步:用 VPC Endpoint 让 AI Agent 调用 Bedrock 全走内网
人工智能·安全
优家数科16 分钟前
2026 中国净水出海白皮书:欧洲准入的技术红线与智能化破局
人工智能·mysql瓶颈
ZPC821022 分钟前
MoveIt Servo 与自己编写的 Action Server 通信
人工智能·算法·机器人
AIminminHu23 分钟前
OpenGL渲染与几何内核那点事-项目实践理论补充(一-3-(1):你的 CAD 终于能联网协作了,但渲染的“内功心法”到底是什么?)
人工智能·opengl
AI自动化工坊24 分钟前
Caveman技能实战:优化AI对话风格实现65%的token成本节省
人工智能·深度学习·机器学习·ai·token·caveman