【PyTorch 】张量(Tensor)简介

张量(Tensor)是 PyTorch 中的 核心数据结构,它是一个多维数组,类似于 NumPy 的 ndarray,但具有更强大的功能,比如可以在 GPU 上加速计算


张量的特性

  1. 多维数组:

    • 张量是一个可以具有 任意维度(1D、2D、3D 或更多) 的数据结构。例如:
      • 标量:0D 张量(如一个单独的数字)。
      • 向量:1D 张量(如 [1.0, 2.0, 3.0])。
      • 矩阵:2D 张量(如 3 × 3 矩阵)。
      • 更高维度:3D 或更多维度(如图像批次)。
  2. 数据存储:

    • PyTorch 张量可以存储在 CPUGPU 上。
    • 张量支持在 CPU 和 GPU 之间的快速切换,使其成为深度学习任务的核心。
  3. 自动求导:

    • PyTorch 张量可以跟踪计算图,并通过反向传播计算梯度,支持深度学习中的优化任务。

张量与 NumPy 的比较

特性PyTorch TensorNumPy ndarray
多维数组支持支持
GPU 支持
自动求导是(支持自动梯度计算)
与其他框架兼容是(与 NumPy 无缝兼容)

张量的基本概念

1. 张量的维度
  • 0D 张量(标量)

    • 只有一个值,没有维度。
    import torch
    t = torch.tensor(3.14)
    print(t.shape)  # 输出:torch.Size([])
    
  • 1D 张量(向量)

    • 例如,表示 [1.0, 2.0, 3.0]
    t = torch.tensor([1.0, 2.0, 3.0])
    print(t.shape)  # 输出:torch.Size([3])
    
  • 2D 张量(矩阵)

    • 例如,一个3 × 2 的矩阵。
    t = torch.tensor([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
    print(t.shape)  # 输出:torch.Size([3, 2])
    
  • 3D 张量(立体数据)

    • 用于表示更复杂的数据,例如一批图片。
    t = torch.ones((4, 3, 2))  # 表示 4 个样本,每个样本是 3x2 的矩阵
    print(t.shape)  # 输出:torch.Size([4, 3, 2])
    

张量的创建

PyTorch 提供了多种方法来创建张量:

1. 从 Python 数据创建
  • 使用 torch.tensor() 将 Python 列表或标量转换为张量:
    t = torch.tensor([1, 2, 3])  # 1D 张量
    print(t)  # 输出:tensor([1, 2, 3])
    
2. 初始化特殊张量
  • 全 0 张量
    t = torch.zeros(3, 3)  # 创建 3x3 的全 0 张量
    
  • 全 1 张量
    t = torch.ones(2, 4)  # 创建 2x4 的全 1 张量
    
  • 随机数张量
    t = torch.rand(3, 3)  # 创建 3x3 的随机数张量
    
3. 从 NumPy 数组创建
  • NumPy 转 PyTorch 张量
    import numpy as np
    arr = np.array([1, 2, 3])
    t = torch.from_numpy(arr)
    
  • PyTorch 张量转 NumPy 数组
    arr = t.numpy()
    

张量的计算

张量支持与 NumPy 类似的数学运算,但同时可以利用 GPU 加速:

a = torch.tensor([1.0, 2.0, 3.0])
b = torch.tensor([4.0, 5.0, 6.0])
print(a + b)  # 输出:tensor([5.0, 7.0, 9.0])
print(a * b)  # 输出:tensor([4.0, 10.0, 18.0])

张量在 GPU 上的使用

  1. 创建 GPU 张量
    t = torch.tensor([1.0, 2.0, 3.0], device='cuda')
    
  2. 将 CPU 张量移动到 GPU
    t_cpu = torch.tensor([1.0, 2.0, 3.0])
    t_gpu = t_cpu.to('cuda')
    

总结

  • 张量(Tensor) 是 PyTorch 的核心数据结构,类似于 NumPy 的多维数组,但支持 GPU 加速和自动求导。
  • 核心特点
    • 支持高效的数学计算。
    • 可以在 CPU 和 GPU 之间自由切换。
    • 与 NumPy 完美兼容。
  • 它是深度学习模型训练中的基础,可以表示输入数据、参数、梯度等各种信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值