【深度学习】torch-张量Tensor

torch-张量Tensor

文章目录

1. 张量Tensor

  • torch.tensor()
python 复制代码
# 创建一个标量(0维张量)
scalar_tensor = torch.tensor(3.14)
# 创建一个向量(1维张量)
vector_tensor = torch.tensor([1, 2, 3])
# 创建一个矩阵(2维张量)
matrix_tensor = torch.tensor([[1, 2], [3, 4]])
# 创建一个3维张量
tensor_3d = torch.tensor([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
  • torch.zeros()-全零张量
python 复制代码
zero_tensor = torch.zeros(3, 4)  # 3行4列的全零矩阵
  • torch.ones()-全一张量
python 复制代码
ones_tensor = torch.ones(2, 3)  # 2行3列的全一矩阵
  • torch.full()-常数填充张量
python 复制代码
constant_tensor = torch.full((2, 2), 7)  # 2行2列的常数填充矩阵,值为7
  • torch.eye()-单位矩阵
python 复制代码
identity_matrix = torch.eye(3)  # 3阶单位矩阵
  • torch.arange()-等差数列张量
python 复制代码
range_tensor = torch.arange(0, 10, 2)  # 从0开始,步长为2,直到小于10
  • torch.rand()-随机张量
python 复制代码
rand_tensor = torch.rand(2, 3)  # 2行3列的均匀分布随机矩阵
  • torch.randn()-正态分布随机张量
python 复制代码
randn_tensor = torch.randn(3, 3)  # 3行3列的正态分布随机矩阵
  • size()-形状
python 复制代码
x = torch.rand(2, 3)
print(x.size())  # 输出: torch.Size([2, 3])
  • dtype-数据类型指定及获取
python 复制代码
x = torch.rand(2, 3, dtype=torch.float)
print(x.dtype)  # 输出: torch.float32
  • to()-GPU/CPU
python 复制代码
if torch.cuda.is_available():
    device = torch.device("cuda")          # GPU 设备
else:
    device = torch.device("cpu")           # CPU 设备
x = x.to(device)
  • randn_like()、zeros_like()、ones_like()-已知张量创建形状类似的张量
python 复制代码
t = torch.randn(3,3)
t1 = torch.randn_like(t)
  • 张量方法(它们有很多参数可选,要用再查):
python 复制代码
t = torch.rand(3, 4, 5)
t.nelement()  # 返回数量
t.size()  # 返回尺寸,元组
t.shape  # 返回形状,元组
t.size(2)  # 返回指定维度大小
t.view(12, 5)    
t.view(-1, 6).shape
t.view(-1, 6).transpose(1, 0).shape
  • 索引和切片

张量的索引和切片和列表基本是一样的,有步长、起点、终点等。例如:

python 复制代码
t[0,0,2]   t[:,1,1]   t>0   t[t > 0]
  • 张量运算
python 复制代码
# 加法运算
add_res = x + y  
# 减法运算  
sub_res = x - y  
# 乘法运算  
mul_res = x * y  
# 除法运算  
div_res = x / y  

# 加法运算
add_res = torch.add(x, y)
# 减法运算
sub_res = torch.subtract(x, y)
# 乘法运算
mul_res = torch.mul(x, y)
# 除法运算
div_res = torch.div(x, y)
  • 转置:
python 复制代码
x = torch.randn(3, 4)
y = x.transpose(0, 1)

下面是对张量操作的总结,不含代码,要用再查:

  • 创建操作:用于构造张量的函数,如ones()和from_numpy()
  • 修改操作:用于直接修改张量
  • 索引、切片、连接、转换操作:用于改变张量的形状、步长或内容的函数
  • 数学操作:通过运算操作张量内容的函数:
    • 逐点操作:通过对每个元素分别应用一个函数来得到一个新的张量,如abs()、cos()
    • 归约操作:通过迭代张量来计算聚合值的函数,如mean()
    • 比较操作:在张量上计算数字谓词的函数
    • 频谱操作:在频域上进行变换和操作的函数
    • 其他操作:作用于向量的特定函数,或对矩阵进行操作的函数
    • BLAS和LAPACK操作:符合基本线性代数子程序规范的函数,用于标量、向量---向量、矩阵---向量、矩阵---矩阵操作
  • 随机采样:从概率分布中随机生成值的函数
  • 序列化:保存和加载张量的函数
  • 并行化:用于控制并行CPU执行的线程数的函数。

与·numpy的互操作:

python 复制代码
# 从张量points得到一个numpy数组
points_np = points.numpy()

# 从numpy得到一个pytorch张量
points = torch.from_numpy(points_np)
相关推荐
虫小宝1 分钟前
电商AI导购系统工程化实践:模型训练、部署与在线推理的架构设计
人工智能
Dreaming_of_you5 分钟前
pytorch/cv2/pil/torchvision处理图像缩小的最佳方案
人工智能·pytorch·python·opencv
shangjian00717 分钟前
AI-大语言模型LLM-Transformer架构3-嵌入和位置编码
人工智能·语言模型·transformer
ws20190725 分钟前
智驾与电池双线突破?AUTO TECH China 2026广州新能源汽车展解码产业新局
大数据·人工智能·科技·汽车
美狐美颜SDK开放平台25 分钟前
直播场景下抖动特效的实现方案:美颜sdk开发经验分享
前端·人工智能·美颜sdk·直播美颜sdk·视频美颜sdk
2501_9419820531 分钟前
企业微信外部群精准运营:API 主动推送消息开发指南
大数据·人工智能·企业微信
Testopia36 分钟前
走一遍 AI 学习之路 —— AI实例系列说明
开发语言·人工智能·python
琅琊榜首202038 分钟前
用AI打造付费短篇小说脑洞:从灵感激活到落地变现
人工智能
机 _ 长39 分钟前
YOLO26 改进 | 训练策略 | 知识蒸馏 (Response + Feature + Relation)
python·深度学习·yolo·目标检测·机器学习·计算机视觉
Deepoch40 分钟前
Deepoc具身大模型开发板:重构农业采摘机器人的智能新生态
人工智能·科技·采摘机器人·农业机器人·具身模型·deepoc