动手学深度学习v2 课程笔记 — 深度学习基础

Posted 肉丸不肉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动手学深度学习v2 课程笔记 — 深度学习基础相关的知识,希望对你有一定的参考价值。

参考文章与视频:


一、深度学习介绍

1. AI地图:符号学 —> 统计 —> 机器学习

2. 应用:广告点击的案例

广告排名的三个步骤:(这个和听过的一个讲座一样:社会计算+广告学)

  • 触发广告
  • 每个广告的点击率预估
  • 根据 点击率×竞价 来将广告排序



二、安装环境

1. 本地安装:CPU

首先,安装Anaconda + Juptyer Notebook

Anaconda是包管理器和环境管理器;Jupyter可以将数据分析的代码、图像和文档全部组合到一个web文档中

Anaconda安装

其次,使用pip安装库

pip install torch torchvision d2l

2. GPU

翻墙用colab


三、数据操作、数据预处理

1. 机器学习和神经网络中的主要数据结构为:n维数组
  • 0维数组:标量。
  • 1维数组:向量。
  • 2维数组:矩阵。
  • 3维数组:图片。
  • 4维数组:多张图片。
2. 创建数组

创建数组所需三个东西:形状、每个元素的数据类型、每个元素的值

3. 访问数组元素

4. 使用jupyer notebook 来运行操作数据

首先在命令行输入:jupyter notebook
其次在浏览器中打开:http://localhost:8888/

  1. 导入torch
  2. 生成张量Tensor:张量表示一个数值组成的数组,这个数组可能有多个维度。

创建数组:



对数组做算术运算

张量合并:









5. 数据预处理:将原始数据读取进来,处理为机器学习能够使用的数据







四、线性代数

1. 一些基本概念







矩阵乘法非常重要。




置换矩阵是单位矩阵的延伸版:它是对单位矩阵的行重新排列而成。

2. 实现







B = A,不会重新分配内存。










范数是向量或矩阵的长度


按特定轴求和:

axis = n,是指在第n维求和。

keepdims = Ture:把求和的那个轴shape变为1。


五、矩阵计算










六、自动求导

1. 向量链式法则



2. 自动求导的原理









3. 自动求导的实现






七、线性回归 + 基础优化算法

1. 线性回归

房价预测问题:预估价、买入价(如果买入价大于预估价,那么就亏了。所以必须要懂房价预测。)






但是数据并没有那么多,所以之后会面临一个问题:训练数据不够多时该怎么办



神经网络通常是用来解决 NP 难问题,所以通常无显式解

2. 基础优化算法

模型没有显式解时,应该怎么办?一个方法是用梯度下降。





随机梯度下降Sgd随机代表是每次采样是随机的,但是每次训练的批量大小不变。

3. 线性回归的从零开始实现

不使用任何的深度学习框架。从零实现整个方法,包括数据流水线、模型、损失函数和小批量随机梯度下降优化器







4. 线性回归的简洁实现

使用深度学习框架来实现。





八、Softmax 回归 + 损失函数 + 图片分类数据集

1. Softmax 回归

Softmax 回归 其实是一个分类问题。

Logistic回归是Softmax回归的特例,Logistic回归是二分类问题。(只需算一个概率,另一个可以用1减去它来算)


房价预测问题 是回归问题。





2. 损失函数:衡量预测值和真实值之间的区别(L2 Loss、L1 Loss、Huber’s Robust Loss)
  • 均方损失(L2 Loss)
  • L1 Loss
  • Huber鲁棒损失

另外,这篇文章介绍了三种损失函数,重点阐述了 交叉熵损失函数 的优点。

  • 分类错误率
  • 均方误差
  • 交叉熵损失函数
3. 图片分类数据集:Fashion-MNIST
  • 读取数据集:训练集、测试集
mnist_train = torchvision.datasets.FashionMNIST(root="../data",
                                                    train=True,
                                                    transform=trans,
                                                    download=True)
mnist_test = torchvision.datasets.FashionMNIST(root="../data",
                                                   train=False,
                                                   transform=trans,
                                                   download=True)
  • 读取小批量数据迭代器(多线程)
train_iter = data.DataLoader(mnist_train, batch_size, shuffle=True,
                             num_workers=get_dataloader_workers())
4. Softmax回归的从零开始实现
5. Softmax回归的框架实现

以上是关于动手学深度学习v2 课程笔记 — 深度学习基础的主要内容,如果未能解决你的问题,请参考以下文章

动手学深度学习 v2

动手学深度学习v2学习笔记02:线性代数矩阵计算自动求导

重磅!李沐「动手学深度学习」中文课程笔记来了!

重磅!李沐「动手学深度学习」中文课程笔记来了!

重磅!李沐「动手学深度学习」中文课程笔记来了!

深度学习结课总结和进阶学习 优化算法 动手学深度学习v2