1. 理解torch.Tensor的核心概念
在PyTorch的世界里,Tensor(张量)是最基础也是最重要的数据结构。简单来说,Tensor就是多维数组的升级版,它不仅能存储数值数据,还能自动计算梯度,这是实现深度学习模型训练的关键能力。
我第一次接触Tensor时,把它想象成一个可以自动"记住"所有计算过程的智能数组。比如当你对Tensor进行加减乘除运算时,PyTorch会在后台默默记录这些操作,等到需要计算梯度时就能沿着这个记录反向传播。这种特性在传统NumPy数组上是没有的。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Tensor的创建与初始化方法
2.1 从Python列表创建Tensor
最直接的创建方式就是从Python列表转换:
python复制import torch
# 从列表创建一维Tensor
data = [1, 2, 3, 4]
tensor1d = torch.tensor(data)
print(tensor1d) # 输出: tensor([1, 2, 3, 4])
# 创建二维Tensor
matrix = [[1, 2], [3, 4]]
tensor2d = torch.tensor(matrix)
print(tensor2d) # 输出: tensor([[1, 2],
# [3, 4]])
注意:使用torch.tensor()会复制数据,如果原始数据已经是NumPy数组,考虑使用torch.from_numpy()来共享内存。
2.2 特殊初始化方法
PyTorch提供了多种便捷的初始化方法:
python复制# 创建全零Tensor
zeros_tensor = torch.zeros(2, 3) # 2行3列的全零矩阵
# 创建全一Tensor
ones_tensor = torch.ones(2, 3)
# 创建单位矩阵
eye_tensor = torch.eye(3) # 3x3的单位矩阵
# 随机初始化
rand_tensor = torch.rand(2, 3) # [0,1)均匀分布
randn_tensor = torch.randn(2, 3) # 标准正态分布
# 等差数列
arange_tensor = torch.arange(0, 10, 2) # tensor([0, 2, 4, 6, 8])
linspace_tensor = torch.linspace(0, 1, 5) # tensor([0.0000, 0.2500, 0.5000, 0.7500, 1.0000])
3. Tensor的重要属性解析
每个Tensor对象都包含多个重要属性,理解这些属性对调试和优化代码至关重要:
python复制t = torch.randn(2, 3, dt
