PyTorch 是一个广泛使用的深度学习框架,以其灵活性和动态计算图著称。以下是 PyTorch 的核心知识点,涵盖从基础到高级的内容,力求全面且详细:
1. PyTorch 基础
1.1 张量(Tensor)
- 定义:PyTorch 的核心数据结构,类似于 NumPy 的数组,但支持 GPU 加速。
- 操作:
- 创建张量:
torch.tensor()
,torch.zeros()
,torch.ones()
,torch.rand()
- 张量属性:
shape
,dtype
,device
- 数学运算:
+
,-
,*
,/
,matmul()
- 索引与切片:与 NumPy 类似。
- 形状操作:
view()
,reshape()
,transpose()
,permute()
- 创建张量:
- 设备管理:
- 将张量移动到 GPU:
tensor.to(device)
- 检查设备:
tensor.device
- 将张量移动到 GPU:
1.2 自动求导(Autograd)
- 定义:PyTorch 的自动微分引擎,用于计算梯度。
- 核心概念:
requires_grad
:标记张量是否需要计算梯度。backward()
:计算梯度。grad
:存储梯度值。with torch.no_grad()
:禁用梯度计算。
- 示例:
x = torch.tensor([1.0, 2.0], requires_grad=True) y = x.sum() y.backward() print(x.grad) # 输出: tensor([1., 1.])
1.3 数据集与数据加载
- 数据集类:
torch.utils.data.Dataset
:自定义数据集需继承此类,实现__len__
和__getitem__
。
- 数据加载器:
torch.utils.data.DataLoader
:用于