张量

介绍

在人工智能(尤其是深度学习)中,“张量”这个词有一个更工程化、更实用的含义,和数学里的严格定义不完全一样,但本质上是相通的。

一句话解释

张量 = 深度学习里的数据容器,是一种可以表示任意维度数据的多维数组。

它是神经网络输入、输出、参数(权重)的基本数据结构。


为什么要用张量?

因为现实世界的数据有各种维度:

  • 标量(0D):一个数字,比如“温度=25”
  • 向量(1D):一串数字,比如“一个样本的特征 [1.2, 3.1, -0.5]”
  • 矩阵(2D):表格,比如“一批样本的特征(样本数 × 特征数)”
  • 3D:序列数据,比如“文本(句子长度 × 词向量维度)”
  • 4D:图像数据,比如“批量图片(批次 × 高度 × 宽度 × 通道)”
  • 5D:视频数据,比如“批量视频(批次 × 时间 × 高度 × 宽度 × 通道)”

深度学习框架(PyTorch、TensorFlow)用张量来统一处理这些数据。


张量在AI中的作用

  1. 存储数据
    图像、文本、声音、标签、模型参数全部用张量表示。

  2. 支持GPU加速
    张量可以放在GPU上进行高速计算,这是深度学习训练快的根本原因。

  3. 自动求导
    张量记录计算过程,能自动计算梯度(反向传播的核心)。

  4. 支持并行计算
    非常适合大规模训练和分布式训练。

特点

  • 有形状(shape):例如 (32, 28, 28, 1) 表示 32 张 28×28 的灰度图
  • 有数据类型(dtype):如 float32、int64
  • 有设备(device):CPU 或 GPU
  • 可以进行自动求导(requires_grad=True)

张量 vs 普通数组

张量 ≈ 多维数组,但更强大:

  • 支持 GPU
  • 支持自动求导
  • 支持广播
  • 支持更多数学操作
  • 支持并行计算

例子

import torch

# 4D张量:批量大小=32,通道=3,高度=224,宽度=224
images = torch.randn(32, 3, 224, 224)

# 2D张量:32个样本,每个样本10个特征
features = torch.randn(32, 10)

# 1D张量:32个标签
labels = torch.randint(0, 10, (32,))

# 模型参数(也是张量)
weight = torch.randn(10, 100, requires_grad=True)

阶(秩)

张量(tensor),相当于数组的 维

在张量中,将 维 称之为 阶(秩)

阶(秩) 数据类型
0阶(秩) 常量
1阶(秩) 1维数组(向量)
2阶(秩) 2维数组(矩阵)
n阶(秩) n维数组

总结

在人工智能中:

  • 张量 = 多维数组 + 自动求导 + GPU加速 + 深度学习专用数据结构
  • 它是现代深度学习的基础数据单位
  • 几乎所有操作(卷积、矩阵乘法、激活函数)都是在张量上进行的

原文出处:/show_1GW2Z8CI42lh.html