第一课:概述

1. 为什么学习Pytorch

  1. 上手快,掌握Numpy和深度学习的基本知识就可以上手
  2. 代码简介灵活:用nn.module封装使得搭建非常方便;基于动态图机制,更灵活
  3. 文档规范:在官网可以查看各种文档,还有每个历史版本的函数更新
  4. 资源多,生态大:新算法多用它发表论文,且背后有Facebook开发团队领导

2. 学习哪些内容

  1. 数据:如何把数据从硬盘读到内存?如何组织数据进行训练?图片如何预处理以及数据增强?
  2. 模型:如何构建模块?如何组织复杂网络?如何初始化网络参数?如何定义网络层?
  3. 损失函数:如何创建损失函数?如何设置损失函数超参数?如何选择损失函数?
  4. 优化器:如何管理参数模型?如何管理多个参数组实现不同学习率?
  5. 迭代训练:如何观察训练效果?如何绘制Loss/Accuray曲线?如何用TensorBoard分析?
  6. 模型应用:如何进行图像分类?图像分割?目标检测?对抗生成?循环网络?

3. 学习路线

  • Pytorch基础:了解Pytorch基础数据结构,基本概念
  • 模型训练步骤:涵盖数据,模型,损失函数,优化器和训练过程中的技术和知识点
  • 深度体验模型:图像分类,分割,目标检测,生成对抗网络,循环神经网络

4. 达到的目标

  • 熟悉Pytorch的基础原理
  • 洞悉模型训练过程以及五个主要步骤中涉及的核心技术
  • 掌握图像分割,分类,检测,对抗网络以及循环网络模型的训练过程以原理

第一周: what is Tensor?

1 pytorch中的数据结构——Tensor

Tensor是PyTorch中最基础的概念,其参与了整个运算过程,因此本节将介绍张量的概念和属性,如data, device, dtype等,并介绍tensor的基本创建方法,如直接创建、依数值创建和依概率分布创建等。学习文档
作业讲解:

  • 张量与矩阵、向量、标量的关系是怎么样的?
  • Variable“赋予”张量什么功能?
  • 采用torch.from_numpy创建张量,并打印查看ndarray和张量数据的地址;
  • 实现torch.normal()创建张量的四种模式

2. 张量的操作运算和一个简单的线性回归

本节将介绍张量的基本操作,如张量拼接切分、索引和变换,同时学习张量的数***算,并基于所学习的知识,实现线性回归模型的训练学习笔记
作业讲解:

  • 调整线性回归模型停止条件以及y = 2*x + (5 + torch.randn(20, 1))中的斜率,训练一个线性回归模型;
  • 计算图的两个主要概念是什么?
  • 动态图与静态图的区别是什么?

3. 计算图-动态图

本节介绍动态图机制,动态图机制是pytorch与tensorflow最大的区别,该部分首先介绍计算图的概念,并通过演示动态图与静态图的搭建过程来理解动态图与静态图的差异学习笔记

4. 自动求导和逻辑回归

本节对pytorch的自动求导系统中常用的两个方法torch.autograd.backward和torch.autograd.grad进行介绍,并演示一阶导数,二阶导数的求导过程;

理解了自动求导系统,以及数据载体——张量,前向传播构建计算图,计算图求取梯度过程,这些知识之后,就可以开始正式训练机器学习模型。这里通过演示逻辑回归模型的训练,学习机器学习回归模型的五大模块:数据、模型、损失函数、优化器和迭代训练过程。

这五大模块将是后面学习的主线。
作业讲解:

  • 逻辑回归模型为什么可以进行二分类?[原本是wx+b>0划分为正,wx+b<0划分为负,现在用sigmoid函数拟合,若sigmoid(wx+b>0)>0.5]
  • 调整bias,将bias调为更大或者负数,模型训练过程是怎么样的?[因为数据的bias太大,出现梯度消失]
  • 理解二分类交叉熵(Binary Cross Entropy)

第二周: 数据读取和预处理

1. DataLoader和Dataset

学习笔记;图片显示
介绍pytorch的数据读取机制,通过一个人民币分类实验来学习pytorch是如何从硬盘中读取数据的,并且深入学习数据读取过程中涉及到的两个模块Dataloader与Dataset

第三周: 模型搭建

1. 模型创建步骤与nn.Module

介绍网络模型的基本类nn.Module,nn.Module是所有网络层的基本类,它拥有8个有序字典,用于管理模型属性,本节课中将要学习如何构建一个Module。

然后通过网络结构和计算图两个角度去观察搭建一个网络模型需要两个步骤:第一步,搭建子模块;第二步,拼接子模块。
学习笔记