PyTorch入门教程:张量与自动求导基础

需积分: 5 2 下载量 6 浏览量 更新于2024-06-21 收藏 8.52MB PPTX 举报
"03PyTorch入门-new.pptx - PyTorch入门教程,由黄海广副教授讲解,包括Tensors张量、Autograd自动求导、神经网络和训练一个分类器等内容。" PyTorch是Facebook开源的一个深度学习框架,它以其灵活性和易用性受到广大开发者的欢迎。本教程主要介绍了PyTorch的基础概念,特别是张量(Tensors)、自动求导(Autograd)以及神经网络的构建和训练。 1. **Tensors张量** - 张量是PyTorch中的核心数据结构,类似于NumPy中的ndarray,可以理解为多维数组。张量的阶数表示其轴的数量,例如,标量是0阶张量,向量是1阶张量,矩阵是2阶张量,而更高阶的张量用于表示更复杂的多维数据。 - 创建张量有多种方式: - 使用`torch.tensor()`直接从已有数据创建。 - 通过`torch.randn()`等函数创建指定大小且符合特定分布(如标准正态分布)的张量。 - 使用`torch.*_like()`函数,如`torch.rand_like()`,创建与给定张量形状相同的张量。 - `tensor.new_*`方法创建与给定张量类型相同但大小不同的新张量。 2. **查看和操作张量属性** - `tensor.dtype`用于查看张量的数据类型,如`torch.float32`。 - `tensor.shape`或`tensor.ndim`提供张量的形状和维度信息。 - `tensor.is_cuda`判断张量是否存储在GPU上。 - `tensor.grad`访问张量的梯度,这对于自动求导非常重要。 3. **张量在CPU和GPU间的转换** - 使用`.cuda()`将CPU张量移动到GPU,`.cpu()`则相反。 - GPU张量不能直接转换为NumPy数组,必须先通过`.cpu()`转回CPU张量,然后使用`.numpy()`。 - 标量张量可以用`.item()`方法获取其值。 4. **Tensor与NumPy的异同** - PyTorch张量和NumPy数组之间有很好的兼容性,可以方便地进行转换。 - PyTorch张量在GPU上的计算能力是NumPy不具备的,这使得PyTorch更适合处理大规模的并行计算任务。 - PyTorch的自动求导系统(Autograd)使得计算梯度变得更加简单,这是NumPy不支持的功能。 5. **Autograd自动求导** - PyTorch的自动求导机制允许我们轻松地计算张量的梯度,这对于训练深度学习模型至关重要。 - 当我们执行操作时,PyTorch会记录这些操作以构建一个计算图,之后可以通过`.backward()`方法反向传播计算梯度。 6. **神经网络** - PyTorch的`nn.Module`和`nn.Functional`库提供了构建神经网络的模块和函数。 - 用户可以定义自己的网络结构,并利用自动求导来训练模型。 7. **训练一个分类器** - 包括定义网络结构、设置损失函数、选择优化器以及训练循环等步骤。 - 在每个训练迭代中,模型会前向传播输入数据,计算损失,然后使用反向传播计算梯度,更新权重。 通过这个入门教程,初学者可以了解PyTorch的基本用法,为进一步学习和实践深度学习项目奠定基础。