Deep Learning with Pytorch | Chapter 1 Introduction deep learning and the PyTorch Library

呼延德华
2023-12-01

最近需要使用PyTorch搭建模型,由于时间上比较宽松,所以找了本书学习了一下PyTorch的基本知识作为入门。选的书籍为《deep learning with pytorch》,这本书总体上分为三个部分:
  第一部分介绍PyTorch的基本知识:预训练模型、基本数据结构、搭建神经网络、建立卷积神经网络;包含章节为 Chapter 1——Chapter 8;
  第二部分使用PyTorch解决一个具体的问题:肺癌检测;包含章节为 Chapter 9——Chapter 14;
  第三部分包含单独的章节——Chapter 15,关于如何将PyTorch模型部署到web服务、嵌入到C++程序、集成到移动应用中;
   
  个人推荐阅读最新的英文原版书籍,这本书的英文不是特别难;在介绍PyTorch应用方面,比官网的教程稍微详细一点,因为书还是把原理介绍的比较详细,由浅入深,非常适合深度学习以及PyTorch入门者。
  [Deep Learning with Pytorch] 系列博客将整理对这本书的学习笔记,书中代码是在Jupyter下运行的,个人使用的是Google的Colab,pytorch的版本为:1.6.0+cu101。


 

Chapter 1 Introduction deep learning and the PyTorch Library

 

深度学习

  1. 机器学习(machine learning)算法很大程度上依赖于特征工程(feature engineering)。特征是对输入数据进行的变换(transformations),从而有助于下游算法(例如分类器)在新数据上产生正确的输出。特征工程包括提出使得下游算法可以解决具体任务的正确变换。

  2. 深度学习(deep larning)则可以从输入数据中自动寻找使得下游任务成功执行的表达(representations),过滤器(filter)的参数是在训练的过程中根据输入样本(example)和对应的标签(target label)迭代地调整更新。

  3. 深度学习有时候也需要特征工程作为系统的先验知识(prior knowledge)。

  4. 训练过程中需要定义一个评判期望输出和模型实际输出之间差距的实值函数,称之为criterion(实际上就是损失函数loss)。它将差距表征为分数(score),通常情况下,差距的分数越低越好。训练过程则是不断调整深度学习模型,使得损失函数趋向于较低值。

PyTorch

  1. 核心数据结构:张量(tensor)——多维数组,与Numpy的arrays有很多相似的特性;使用张量表征数字、向量、矩阵和数组,并提供运算的函数;在与深度学习相关方面,PyTorch使用GPU提供加速计算,同时提供对通用数学表达式进行数值优化的接口–>深度学习中训练网络。

  2. 两个核心
     (1) tensor和定义在tensor上的operation
     (2) 自动微分:跟踪在tensor上执行的运算,并自动计算输出对输入的梯度。

  3. 用于构建神经网络的核心组件–>torch.nn
     提供构建神经网络的结构:卷积层、全连接层、激活函数、损失函数

  4. 用于深度学习

  • 数据处理
    • 使用torch.utils.data.Dataset类将原始样本转换成PyTorch的tensor;
    • 使用Dataloader类的实例并行地加载样本,并组成batch(包含多个样本的张量),该类的实例可以产生子进程,以便从后台数据集中加载数据,等待训练循环的开始。
  • 训练模型
    • 根据样本评估(evaluate)模型;
    • 使用损失函数(loss function, criterion)比较模型真实输出和期望输出;PyTorch的损失函数封装在torch.nn组件中;
    • 自动微分机制(autograd engine)计算梯度;
    • 使用优化器更新模型的参数;PyTorch的优化器封装在torch.optim中;
    • 使用torch.nn.parallel.DistributedDataParallel和torch.distributed两个子组件管理并行训练–>多个GPU或者机器同时训练一个大的模型。
  • 部署
    • 将训练好的模型(trained model)部署到服务器上、云上或者集成到手机应用中;
    • PyTorch默认为立即执行模型,称之为eager mode——当python解释器执行包含PyTorch的指令(instruction)时,相应的运算(operation)会立即被低层的C++或者CUDA执行;
    • 使用TorchScript提前编译模型。TorchScript可以将模型序列化为一组指令集,这组指令集独立于pyhon的调用,例如C++程序或者移动设备的调用–>导出模型,以PyTorch的TorchScript格式导出或者ONNX格式导出。
 类似资料:

相关阅读

相关文章

相关问答