logo

PyTorch 概述

王哲峰 / 2022-01-03


目录

PyTorch 建模流程

使用 PyTorch 实现神经网络模型的一般流程包括:

  1. 数据准备
  2. 定义模型
    • 模型层
    • 激活函数
  3. 训练模型
    • 损失函数
    • 优化算法
    • 评估指标
  4. 评估模型
  5. 使用模型
  6. 保存模型
  7. 模型部署

PyTorch 核心概念

PyTorch 是一个基于 Python 的机器学习、深度学习库。

PyTorch 底层最核心的概念是:

PyTorch 主要提供了两种核心功能:

  1. 支持 GPU 加速的张量计算
  2. 方便优化模型的自动微分机制

PyTorch 的主要优点:

PyTorch 层次结构

PyTorch 的层次结构从低到高可以分成如下五层:

  1. 最底层为硬件层,PyTorch 支持 CPU、GPU、TPU 加入计算资源池
  2. 第二层为 C++ 实现的内核
  3. 第三层为 Python 实现的操作符,提供了封装 C++ 内核的低级 API 指令。 主要包括各种张量操作算子、自动微分、变量管理。如:
    • 张量操作:torch.tensortorch.cat
    • 自动微分:torch.autograd.grad
    • 动态计算图:torch.nn.Module
  4. 第四层为 Python 实现的模型组件,对低级 API 进行了函数封装。 主要包括各种模型层、损失函数、优化器、数据管道等等。如:
    • 数据管道:torch.utils.data.DataLoader
    • 模型层:torch.nn.Linear
    • 损失函数、评估指标:torch.nn.BCE
    • 优化算法:torch.optim.Adam
  5. 第五层为 Python 实现的模型接口,PyTorch 没有官方的高阶 API,但有一些第三方的高阶 API 库。
    • 为了便于训练模型,这个仓库仿照 Keras 中的模型接口,封装了 PyTorch 的高阶模型接口 torchkeras.KerasModel
    • 此外,该仓库同样通过引用和借鉴 pytorch_lightning 的一些能力, 设计了一个和 torchkeras.KerasModel 功能类似的高阶模型接口 torchkeras.LightModel, 功能更加强大

PyTorch 低阶 API

PyTorch 中阶 API

PyTorch 高阶 API

PyTorch 没有官方的高阶 API,一般通过 torch.nn.Module 来构建模型并编写自定义训练循环实现训练循环、 验证循环、预测循环。

为了更加方便地训练模型,可以使用仿 Keras 的 PyTorch 模型接口 torchkeras.KerasModel/LightModel, 其仓库为 torchkeras,作为 PyTorch 的高阶 API。

构建模型的三种方法

训练模型的三种方法

使用 GPU 训练模型

PyTorch 生态资源