动手学深度学习v2课程笔记—深度学习基础(代码片段)

鱼米粒 鱼米粒     2022-12-14     525

关键词:

参考文章与视频:


一、深度学习介绍

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学习笔记02:线性代数矩阵计算自动求导(代码片段)

前文回顾:数据操作、数据预处理文章目录一、线性代数实现1.1标量和向量1.2矩阵和多维张量1.3张量的运算1.3.1基础运算1.3.2按特定轴运算1.3.3乘积运算1.3.4范数二、矩阵计算2.1标量导数2.2向量导数2.2.1标量-向量求导2.2.2向量-... 查看详情

动手学深度学习v2(代码片段)

动手学深度学习v201课程安排目标内容形式你将学到什么?资源02深度学习介绍AI地图图片分类物体检测和分割样式迁移人脸合成文字生成图片文字生成03安装本地安装01课程安排目标内容深度学习的核心之一:就是卷积神... 查看详情

模型选择+过拟合和欠拟合(动手学深度学习v2)笔记(代码片段)

训练误差和泛化误差训练误差(trainingerror):模型在训练数据集上计算得到的误差泛化误差(generalizationerror):模型应用在同样从原始样本的分布中抽取的无限多数据样本时,模型误差的期望验证数... 查看详情

动手学深度学习diveintodeeplearning--day01--学习资料环境配置

正式开始《动手学深度学习v2-从零开始介绍深度学习算法和代码实现》的学习惊诧于李沐老师2021年的视频里就已经提到DALL·E2、ChatGPT等相关的内容了闲话休叙,先贴一下学习资料链接:课程主页:OpenLearningCamp-《动手学深度学习... 查看详情

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

...学习笔记值得收藏。亚马逊资深首席科学家李沐博士的「动手学深度学习」中文系列课程,这门课从3月持续到8月,超过28000人参与了直播,课程回放在B站的播放量达到了上 查看详情

样式迁移styletransfer动手学深度学习v2(代码片段)

1.样式迁移StyleTransfer2.代码实现3.Q&A越靠近输出端内容还原度越高。不需要算梯度,y.detach(),是因为网络不更新。核心优化的是一个参数矩阵,每做一张图片的风格一样,都要重新训练一遍。后面用GAN来实现,就... 查看详情

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

...学习笔记值得收藏。亚马逊资深首席科学家李沐博士的「动手学深度学习」中文系列课程,这门课从3月持续到8月,超过28000人参与了直播,课程回放在B站的播放量达到了上百万次。李沐B站视频地址:https://space.bi... 查看详情

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

1.优化算法2.课程总结和进阶学习感谢沐神参考https://www.bilibili.com/video/BV1bP4y1p7Gq/?spm_id_from=autoNext 查看详情

李沐《动手学深度学习》第二版pytorch笔记1环境搭建(代码片段)

李沐《动手学深度学习》第二版pytorch笔记1搭建环境文章目录李沐《动手学深度学习》第二版pytorch笔记1搭建环境此时尚有耐心虚拟环境搭建创建虚拟环境查看已有的虚拟环境激活虚拟环境安装深度学习框架和d2l软件包安装d2l安... 查看详情

样式迁移styletransfer动手学深度学习v2(代码片段)

1.样式迁移StyleTransfer2.代码实现3.Q&A越靠近输出端内容还原度越高。不需要算梯度,y.detach(),是因为网络不更新。核心优化的是一个参数矩阵,每做一张图片的风格一样,都要重新训练一遍。后面用GAN来实现,就... 查看详情

03安装动手学深度学习v2将远端机器端口映射到本地端口(代码片段)

将远端机器端口映射到本地端口1在阿里云服务器2然后再到win10上,按下"田+R"3http://localhost:8888/tree前面的笔记可以查看:https://blog.csdn.net/qq_38689263/article/details/122153528?spm=1001.2014.3001.55011在阿里云服务器直 查看详情

《深度学习笔记》——训练加速篇

1介绍在本文中,我们将记录关于模型训练加速的学习笔记~首先我们看看李沐老师在【动手学深度学习v2】课程中讲述的关于“让训练更加稳定的技巧”: 查看详情

bert预训练动手学深度学习v2

1.BERT预训练Transformer编码器2.BERT代码3.BERT预训练数据代码4.BERT预训练代码5.Q&A参考https://www.bilibili.com/video/BV1yU4y1E7Ns/?spm_id_from=autoNext 查看详情

3.1线性回归解析解动手学深度学习v2

3.1线性回归解析解【动手学深度学习v2】1线性回归2损失函数3解析解1线性回归矩阵-向量乘法表示:X的每一行是一个样本,每一列是一种特征。2损失函数3解析解 查看详情

跟李沐导师:动手学深度学习!

...划,内容:深度学习入门二月学习需求收集李沐动手学深度学习热度排名第二。根据读者的学习建议,Datawhale团队联系了李沐老师,将组织动手学深度学习课程的学习。关于动手学深度学习《动手学深度学习》这... 查看详情

李沐亚马逊资深首席科学家-动手学深度学习v2-2安装(代码片段)

笔者在MacOS中安装环境,所以命令修改了一点点如下:本地安装1.可选使用conda/minicoda环境conda为包管理工具,https://github.com/conda/condacondaenvremoved2l-zhcondacreate-y-nd2l-zhpython=3.8pipcondaactivated2l-zh2.安装需要的 查看详情

批量归一化batchnormalization动手学深度学习v2

1.批量归一化BatchNormalization2016年左右出来的2.代码实现对比没有加BN之前的效果,收敛没那么好参考https://www.bilibili.com/video/BV1X44y1r77r?p=1 查看详情

网络中的网络nin动手学深度学习v2pytorch(代码片段)

1.网络中的网络NiN网络中的网络NiN是基于AlexNet的尝试改进,去掉全连接层。网络中的网络NiN后面被使用的不多,但是去掉全连接层的思想被采用。全连接层最大的问题是用很多内存占用很大的计算带宽收敛很快,但是... 查看详情