machine-learning
  • Welcome
  • 动手学深度学习
    • 1. 前言
    • 2. 预备知识
    • 3. 线性神经网络
    • 4. 多层感知机
    • 5. 深度学习计算
    • 6. 卷积神经网络
    • 7. 现代卷积神经网络
    • 8. 循环神经网络
    • 9. 现代循环神经网络
    • 10. 注意力机制
    • 11. 优化算法
    • 12. 计算性能
    • 13. 计算机视觉
    • 14. 自然语言处理:预训练
    • 15. 自然语言处理:应用
    • 16. 附录:深度学习工具
  • 百面机器学习
    • 1. 特征工程
    • 2. 模型评估
    • 3. 经典算法
    • 4. 降维
    • 5. 非监督学习
    • 6. 概率图模型
    • 7. 优化算法
    • 8. 采样
    • 9. 前向神经网络
    • 10. 循环神经网络
    • 11. 强化学习
    • 12. 集成学习
    • 13. 生成式对抗网络
    • 14. 人工智能的热门应用
  • 百面深度学习
    • 1. 卷积神经网络 CNN
    • 2. 循环神经网络 RNN
    • 3. 图神经网络 GNN
    • 4. 生成模型
    • 5. 生成式对抗网络 GAN
    • 6. 强化学习 RL
    • 7. 元学习
    • 8. 自动化机器学习 AutoML
    • 9. 计算机视觉 CV
    • 10. 自然语言处理 NLP
    • 11. 推荐系统
    • 12. 计算广告
    • 13. 视频处理
    • 14. 计算机听觉
    • 15. 自动驾驶
  • 统计学习方法
  • 推荐系统实践
    • 1. 推荐系统
    • 2. 特征工程
    • 3. Embedding
    • 4. 精排
    • 5. 召回
    • 6. 粗排/重排
    • 7. 多任务/多场景
    • 8. 冷启动
    • 9. 评估调试
    • 10. 自我修养
  • 深度学习推荐系统
    • 1. 推荐系统
    • 2. 进化之路
    • 3. 深度学习的应用
    • 4. Embedding
    • 5. 多角度审视
    • 6. 工程实现
    • 7. 评估方法
    • 8. 前沿实践
    • 9. 知识框架
  • 强化学习的数学原理
    • 1. 基础概念
    • 2. 贝尔曼公式
    • 3. 贝尔曼最优公式
    • 4. 值迭代与策略迭代
    • 5. 蒙特卡洛方法
    • 6. 随机近似与随机梯度下降
    • 7. 时序差分方法
    • 8. 值函数近似
    • 9. 策略梯度方法
    • 10. Actor-Critic方法
Powered by GitBook
On this page
  • 2.1 数据操作
  • 2.2 数据预处理
  • 2.3 线性代数
  • 2.4 微积分
  • 2.5 自动微分
  1. 动手学深度学习

2. 预备知识

Previous1. 前言Next3. 线性神经网络

Last updated 3 years ago

2.1 数据操作

  • N维数组

    • 0d(标量)、1d(向量)、2d(矩阵)

    • 3d(RGB图片)、4d(批量图片)、5d(批量视频)

  • 数组操作

# 节约内存
Y = Y + X # 重新分配
Y += X # 原地计算
B = A.clone() # 内存复制

2.2 数据预处理

  • float32(建议), float64(默认)

2.3 线性代数

2.4 微积分

2.5 自动微分

  • 计算图

    • 将代码分解成操作子

    • 将计算表示成一个DAG

  • 自动求导的两种模式

    • 正向累积:O(n), O(1),但每层都需要从头计算

    • 反向累积(反向传播,back propagation):O(n), O(n),存储正向所有层结果

  • 反向传播例子

    • 反向传播

      y = 2 * torch.dot(x, x)
      y.backward()
      x.grad == 4 * x
    • 非标量反向传播

      y = x * x
      y.sum().backward()
      x.grad
    • 分离计算(用于固定网络参数)

      y = x * x
      u = y.detach()
      z = u * x
      z.sum().backward()
      x.grad == u
    • Python 控制流(条件、循环、函数调用)

torch
pandas
线性代数
微积分
自动微分