Python学习笔记其三

PyTorch教程

在开始学习本教程之前,你应具备以下基础知识,以便更好地理解和应用 PyTorch

  • 编程基础:熟悉至少一种编程语言,尤其是 Python,这是 PyTorch 的主要开发语言。
  • 数学基础:掌握线性代数、概率论与统计学、微积分等基础数学知识,为理解机器学习算法打下坚实基础。
  • 机器学习基础:了解监督学习、无监督学习、强化学习等基本概念,以及常用的模型评估指标(如准确率、召回率、F1 分数等)
  • 深度学习基础:熟悉神经网络的基本结构和原理,如前馈神经网络、CNN、RNN、LSTM 等
  • 领域知识:若计划将 PyTorch 应用于计算机视觉或自然语言处理,了解相关领
    域的基础知识将大有裨益。

image-20251003140242783

有关pytorch,请见PyTorch 文档 — PyTorch 2.8 文档 - PyTorch 文档

PyTorch简介

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++实现,应用于人工智能领域,如计算机视觉和自然语言处理。

PyTorch 最初由 Meta Platforms 的人工智能研究团队开发,现在属于Linux 基金会的一部分。

PyTorch 主要有两大特征:

  • 类似于 NumPy 的张量计算,能在 GPU 等硬件加速器上加速。
  • 基于带自动微分系统的深度神经网络。

注:基于自动微分系统的深度神经网络是 PyTorch 核心能力之一,其通过autograd模块自动追踪张量运算过程,可在反向传播阶段无需人工推导,直接计算损失函数对模型参数的梯度,为网络训练提供关键的梯度信息支撑。
NumPy是Python语言的一个扩展程序库。支持高阶大规模的多维数组与矩阵运算,此外也针对数组运算提供大量的数学

PyTorch 特性

  • 动态计算图(Dynamic Computation Graphs): PyTorch 的计算图是动态的,这意味着它们在运行时构建,并且可以随时改变。这为实验和调试提供了极大的灵活性,因为开发者可以逐行
    执行代码,查看中间结果。

  • 自动微分(Automatic Differentiation): PyTorch 的自动微分系统允许开发者轻松地计算梯度这对于训练深度学习模型至关重要。它通过反向传播算法自动计算出损失函数对模型参数的梯度。

  • 张量计算(Tensor Computation): PyTorch 提供了类似于 NumPy 的张量操作,这些操作可以在 CPU 和 GPU 上执行,从而加速计算过程。张量是 PyTorch 中的基本数据结构,用于存储和操作数据。

动态计算图(Dynamic Computation Graph.
PyTorch 最显著的特点之一是其动态计算图的机制。PyTorch 在执行时构建计算图,这意味着在每次计算时,图都会根据输入数据的形状自动变化。

动态计算图的优点:
计算图(Computation Graph)是深度学习中一个非常核心的概念,可以把它理解成:
拿一张用“节点”和“边”表示数学运算流程的“流程图”,它描述了数据(张量)是如何通过系列运算一步步变换、最终得到输出结果的。

  • 更加灵活,特别适用于需要条件判断或递归的场景。

  • 方便调试和修改,能够直接查看中间结果·更接近 Python 编程的风格,易于上手。

image-20251003140819157

(+)位置可以看到张量

image-20251003140914863

image-20251003140925476

image-20251003140959558

PyTorch安装

image-20251003141107206

image-20251003141216897

建议使用Python3.9

image-20251003141302556

image-20251003141332954

image-20251003141356803

PyTorch

image-20251003142043338

image-20251003142405066

image-20251003144017338

1
2
3
4
5
6
import torch

# 当前安装的 PyTorch 库的版本
print(torch.__version__)
# 检查 CUDA 是否可用,即你的系统有 NVIDIA 的 GPU
print(torch.cuda.is_available())

PyTorch 安装 | 菜鸟教程

image-20251003144552271

1
2
3
import torch
x = torch.rand(5, 3)
print(x)

image-20251003145225620

PyTorch 基础 | 菜鸟教程

PyTorch 张量(Tensor) | 菜鸟教程

神经网络

神经网络介绍

image-20251003170121375

image-20251003170146520

image-20251003170308804

image-20251003170316205

image-20251003170531497

image-20251003170715586

image-20251003170752551

image-20251003170933461

image-20251003171319618

image-20251003171547160

image-20251003172010239

image-20251003172058968

image-20251003172219754

image-20251003172329671

image-20251003172344771

image-20251003172445140

image-20251003172546077

image-20251003172656866

image-20251003172809240

image-20251003172927799

image-20251003172940247

数据集与数据加载

image-20251003173012074

image-20251003173435990