动手学深度学习
文章平均质量分 83
学习李沐老师深度学习视频,记录笔记
陌上阳光
这个作者很懒,什么都没留下…
展开
-
动手学深度学习57 长短期记忆网络LSTM
忘记门:忘记前面H_t-1的内容输出门:极端为0,相当于重置,什么信息都不要了。原创 2024-08-15 10:00:00 · 349 阅读 · 0 评论 -
动手学深度学习56 GRU门控循环单元
RNN模型# 包装rnn函数"""从零开始实现的循环神经网络模型"""# 重写 __call__ 或者 写forward函数都行# x load的数据集 (批量大小,时间步数) onehot 整型变成浮点型# 预测"""prefix: 给定句子的开头num_preds: 预测多少词在prefix后面生成新字符"""for y in prefix[1:]: # 预热期for _ in range(num_preds): # 预测num_preds步# 多分类 拿出最大概率的索引。原创 2024-08-15 10:00:00 · 276 阅读 · 0 评论 -
动手学深度学习55 循环神经网络 RNN 的实现
每个批量每个样本要做t次分类【任意时间点都要做一次分类】,所以要乘。不做detach会记住前面计算的东西,误差反传会多算东西。16 每一个帧用cnn抽特征–向量,不需要one-hot. rnn不能处理特别长的序列。23 h-长为256的向量,很长很难计算。变长类似很长的mlp,容易过拟合。27 端侧–主要车上,未来家里所有深度学习都跑在车上–家庭超级计算机。7 不会预测特别长的东西。1 num_steps 输入到小批量里面面样本句子的长度。21 字符预测起来比较简单,输出是28voab,分类数少。原创 2024-07-28 09:00:00 · 2344 阅读 · 13 评论 -
动手学深度学习54 循环神经网络
潜变量和隐变量的区别:隐变量通常是现实生活中存在的东西,只是我们没有观察到;潜变量可指代现实生活中不存在(人为创造)的东西。g值正常,不做处理,g过大,将值处理成theta,保证g不会过大–不会超过theta值,防止梯度爆炸。输出【o_t】发生在观察【x_t】之前。根据o_t和x_t的值计算损失。循环神经网络可以认为是一个简单的递归网络。递归理解为何树一样的东西。困惑度=1,下面候选词词概率最高。n个输出的多分类交叉熵损失平均值,再取指数–困惑度。所有x的信息都存储到h里面。做指数,损失数值会变大。原创 2024-07-09 17:33:21 · 732 阅读 · 0 评论 -
动手学深度学习53 语言模型
n越大,空间复杂度越大。X:两个长为num_steps=5的序列,Y:每个元素是对应X序列的后一个元素。一元语法:马尔科夫假设tao=0 基本认为每一个字是独立的,不管前面的东西。第二种做法:两个相邻小批量的数据是相邻的。数据是连续的,可以做更长的序列出来。3 不存count为0的词,空间复杂度还是n–文本长度。最大的好处:可以处理很长的序列。每次看的序列是固定的。不调用d2l的Vocab,按照前面的代码重新写一份。2 连续单词是有时序的,有先后顺序,不能打乱。6 T 序列的长度,每次看多长的序列。原创 2024-07-09 15:06:22 · 560 阅读 · 0 评论 -
动手学深度学习52 文本预处理
核心:怎么把文本处理成能训练的数据。中文分词-jieba。len28: 26字母++空格文本预处理:输入文本–>输出一个整型的向量。原创 2024-06-20 16:18:56 · 245 阅读 · 0 评论 -
动手学深度学习51 序列模型
难点:从 600开始,只给前4个真实数据点预测接下来四个数据,后续数据不再给真实数据,用预测的数据继续预测。桃红色:只给4个真实数据点预测接下来的数据,后续数据不再给真实数据。:给一些数据,用数据前面的部分数据做预测,对见过的数据建模。: 可以认为是隐变量的一个稍微推广类型,统计上稍有区别。蓝色:每次给4个真实数据点预测下一个数据。绿色: 给4个点,预测未来16个数据点。桃红色:每次给4个真实数据点预测数据。红色:给4个点,预测未来64个数据点。不写成函数的形式,写成变量的形式。给定过去的数据,预测未来。原创 2024-06-20 14:54:28 · 479 阅读 · 0 评论 -
动手学深度学习33 单机多卡并行
当transformer模型很大,有100GB的时候只能用模型并行。数据并行,拿的参数是完整的?原创 2024-06-13 10:00:00 · 426 阅读 · 0 评论 -
动手学深度学习31 深度学习硬件 CPU和GPU
PPT: https://courses.d2l.ai/zh-v2/assets/pdfs/part-2_1.pdf视频: https://www.bilibili.com/video/BV1TU4y1j7Wd/?p=2&spm_id_from=pageDriver&vd_source=eb04c9a33e87ceba9c9a2e5f09752ef8寄存器速度是最快的,可以认为和计算机主频一样快。主频即CPU的时钟频率,计算机的操作在时钟信号的控制下分步执行,每个时钟信号周期完成一步操作,时钟频率的高原创 2024-06-12 10:00:00 · 1514 阅读 · 0 评论 -
动手学深度学习29 残差网络ResNet
作为模块使用,适合在构建模型时作为层的一部分。:作为函数使用,适合在自定义的前向传播方法中调用。原创 2024-06-07 17:51:45 · 1138 阅读 · 0 评论 -
动手学深度学习28 批量归一化
layerNormalization在每一个样本里面的特征做normalization,通常用于比较大的网络。把每一层的输入均值方差都在一个层面,学习率可以用较大的。不会因为学习率过大导致梯度爆炸【上层网络】,学习率过小而无法收敛的问题【底层网络】。线性层不一定学到自己的想要的东西,不做的的话可能数值不稳定,可能不能训练到比较好的值域里面。把 批量大小* 高 * 宽=样本大小,那通道维就是特征维, 1*1的卷积也是这样做的。12 BN一般不用在激活函数之后,因为是输入和输出的线性相关,可以尝试看看效果。原创 2024-06-07 10:00:00 · 562 阅读 · 0 评论 -
动手学深度学习27 GoogLeNet
Googlev3 占内存比较大 训练比较慢 但精度还挺好的一个网络。更小的卷积核 让高宽保留的更多,能够应用到更深的网络。通道数不一样 是1*1卷积层的输出通道数不一样导致的。stage 高宽减半做完表示一个stage完成。白色块用来处理通道数,蓝色块用来抽取信息。大量使用1*1卷积 降低通道数。原创 2024-05-31 10:00:00 · 237 阅读 · 0 评论 -
动手学深度学习26 网络中的网络NiN
1卷积层,对每个像素对应通道的向量做全连接层,把全连接层对每个像素做连接,2个1*1卷积层对每个像素的输入通道数做了一个有两个隐藏层的MLP, MLP有ReLU函数,增加了非线性。减小模型参数,降低模型复杂度,模型泛化会变好,精度变高,但是收敛变慢。上线C++, pytorch可以用torchscript转,模型很复杂不一定能转。长期不关机会有内存泄漏。softmax是写在loss函数里面的,分类是都要做softmax的。NIN为什么选用2个1*1卷积层,试出来的。超宽的全连接层很容易过拟合,效果很差。原创 2024-05-31 10:00:00 · 495 阅读 · 0 评论 -
pytorch执行报错cuda版本不匹配
安装的torch版本是cuda11.8,但是机器环境指向的是11.1版本bashrc是全局变量文件,source后会在所有的虚拟环境里面生效。export导入多个cuda文件,最后生效的是最后一次export的cuda版本。cuda11.8执行完上述命令后,脚本不再报错。原创 2024-05-30 10:00:00 · 901 阅读 · 0 评论 -
动手学深度学习25 VGG
最后一层全局池化层,输入通道数和要预测的类别数相同,max(所有通道)输出的通道就是对应的类别,做softmax就是输出概率。在每个通道上全局平均?在linux机器上执行,无法像jupyter一样随时查看plt生成的图片,需要保存到一个文件中。vgg发现:模型用更深更窄,窗口更小,模型效果更好。fancy 想法 novelty 新颖性。尽量用简单的模型,后续可以重复使用。经典设置:把高宽减半,通道数翻倍。vgg11=8层卷积+3层全连接。原创 2024-05-30 10:00:00 · 292 阅读 · 0 评论 -
torch-cuda版本安装
没有安装torch的GPU版本,无法将模型或数据提交到gpu上训练。原创 2024-05-29 15:30:42 · 1428 阅读 · 0 评论 -
动手学深度学习24 AlexNet
cnn和softmax一起训练的,可能cnn学习到的就是softmax需要的,从模型层面就是一个模型,更高效一些。最后两个全连接层在前面卷积抽取不够深的情况下继续抽取,模型更大。参数对比, AlexNet 46M Vs LeNet 0.6M。如果图片size和网络要求的size不一致,怎么处理。加了三层隐藏层,通道数和全连接层单元数更多。计算需要的浮点数,10亿次浮点数计算。AlexNet & LeNet对比。3 往左偏往右偏都可以 2。技术基线已经很高,产品落地。2 允许往左偏一点点。原创 2024-05-29 11:09:45 · 286 阅读 · 0 评论 -
动手学深度学习23 LeNet
卷积就是让每一层shape不断压缩变小【高宽减少】,通道数增多,把特征信息放到不同的通道里面。每一个通道认为是一个模式。然后再做全连接的输入。cnn explainer 看到每一个通道学习到的是什么东西。两层卷积+两层池化+两层全连接。原创 2024-05-28 17:22:59 · 372 阅读 · 0 评论 -
动手学深度学习22 池化层
不会融合通道-输入输出通道保持一致。多通道融合可以交给卷积层操作,池化层不用处理。用滑动窗口计算输出,但是没有核计算这些东西。即没有要学的东西,不会把模型变大。视频: 【22 池化层【动手学深度学习v2】】降低卷积层对位置信息的敏感度。平均池化层–柔和很多。原创 2024-05-27 10:15:26 · 317 阅读 · 0 评论 -
动手学深度学习21 卷积层里的多输入多输出通道
是一个强大的工具,用于沿新维度连接一系列形状相同的张量。这对于需要批量处理或组织数据的任务非常有用。通过调整dim参数,你可以灵活地控制新维度的插入位置,从而改变结果张量的形状。原创 2024-05-16 17:02:56 · 1047 阅读 · 0 评论 -
动手学深度学习20 卷积层里的填充和步幅
课本: https://zh-v2.d2l.ai/chapter_convolutional-neural-networks/padding-and-strides.html。原创 2024-05-16 08:00:00 · 925 阅读 · 0 评论 -
动手学深度学习19 卷积层
28:全连接层最大问题:权重w的高取决于输入的宽,当输入给1200w像素的时候,权重的高就是1200w,权重参数的矩阵过大,数据爆炸。21: 最终要看到所有的数据,不用看很远,类似于宽浅MLP的效果不一定好于深窄的MLP。交叉相关和卷积没有太大区别,区别是卷积在索引处有负号,在索引w的时候是反过来走的,所以是负号。又因为是对称的,在实际使用中正反没有区别,学到的w正反,左右上下反一下是一样的东西。kernel卷积核大小控制的是局部性,大看的局部多,小看的局部少。太远的元素,只看附近的。原创 2024-05-15 16:56:12 · 943 阅读 · 0 评论 -
动手学深度学习18 预测房价竞赛总结
因此,将 Autogluon 与 PyTorch 结合使用进行 NAS,意味着利用 Autogluon 提供的自动化搜索技术,结合 PyTorch 提供的深度学习能力,来寻找最优的神经网络结构和超参数配置,以达到更好的模型性能和效果。3:数据处理,难的是要预测一个任务,机器学习能不能做,要什么样的数据,历史数据是否有用,从哪里找数据,数据怎么获取,噪音数据怎么处理【90%的数据可能都是噪音】,哪些数据是对模型有用的。13:AutoGluon从最简单最快的模型开始,继续往下训练,一直试不同的模型。原创 2024-05-13 19:33:21 · 953 阅读 · 0 评论 -
动手学深度学习17 使用和购买gpu
5:有显卡,但是torch.cuda.device_count()=0 ,可能原因:1是可能cuda没装好,可以看下显卡信息nvidia-smi。2可能是装的cpu版本的pytorch,需要装成gpu版本的pytorch。14:自定义的网络结构,每次创建一个实例是会创建新的参数,不把同一个实例放在不同位置,是不会共享参数的。13:GPU上的推理通常比训练好一些,不是内存的关键,可以把batchsize设置大一些。8:gpu推理,就是inference,不在gpu上forward,不做训练–算梯度-。原创 2024-05-11 17:11:42 · 697 阅读 · 0 评论 -
动手学深度学习16 Pytorch神经网络基础
5.4. 自定义层# 5.4.1. 不带参数的层# 构造一个没有任何参数的自定义层。CenteredLayer类要从其输入中减去均值。# 将层作为组件合并到更复杂的模型中print(Y)# 5.4.2. 带参数的层# 这些参数可以通过训练进行调整。# 可以使用内置函数来创建参数,这些函数提供一些基本的管理功能。比如管理访问、初始化、共享、保存和加载模型参数。# 这样做的好处之一是:我们不需要为每个自定义层编写自定义的序列化程序。原创 2024-05-11 13:38:02 · 1152 阅读 · 1 评论 -
动手学机器学习15 实战kaggle比赛
对于每个分类变量,它会创建一个新的二进制列,其中包含了该变量可能的取值,每个取值对应一个新的二进制列,取值出现的位置上为1,其他位置为0。这种情况下,数组的内存消耗会更大。需要注意的是,哈希函数通常用于验证数据的完整性或进行简单的加密,并不适用于安全敏感的密码存储或加密场景,因为 SHA-1 已经被证明存在安全性问题,建议在安全敏感场景下使用更安全的哈希算法,如 SHA-256、SHA-512 等。这个哑变量列的取值为1表示原始数据中的值为缺失值(NaN),其他列的取值为0表示对应的值不是缺失值。原创 2024-05-09 19:08:09 · 671 阅读 · 0 评论 -
动手学深度学习14 数值稳定性+模型初始化和激活函数
*视频:**https://www.bilibili.com/video/BV1u64y1i75a/?**电子书:**https://zh-v2.d2l.ai/chapter_multilayer-perceptrons/numerical-stability-and-init.html**课件:**https://courses.d2l.ai/zh-v2/assets/pdfs/part-0_18.pdf这一章不好理解,数学推理较多。原创 2024-04-25 16:40:35 · 617 阅读 · 0 评论 -
动手学深度学习12 Dropout丢弃法
总的来说,将 Transformer 描述为“kernel machine”是一种类比的说法,用来强调 Transformer 模型中注意力机制与核方法之间的一些数学和功能上的相似性,以及 Transformer 在处理序列数据时的性能和灵活性。总体来说,CuDNN 是 NVIDIA 提供的一个关键工具,用于在 NVIDIA GPU 上加速深度学习任务的执行,提高深度神经网络模型训练和推理的效率和速度。torch.rand是产生0-1之间的均匀分布,randn是产生均值为0,方差为1的高斯分布。原创 2024-04-24 17:46:54 · 866 阅读 · 1 评论 -
动手学深度学习11 权重衰退
每次都在权重更新之前对w做了一次放小(ηλ<1), 所以叫做权重衰退。lambda是控制模型参数的超参数。原创 2024-04-19 18:23:29 · 757 阅读 · 0 评论 -
深度学习遇到的疑问记录
Softmax和Sigmoid都是神经网络中常用的激活函数,它们的作用是将输入转换为概率或归一化的输出。原创 2024-04-15 15:08:39 · 759 阅读 · 0 评论 -
动手学深度学习10 模型选择+过拟合和欠拟合
Optuna 提供了一种高效的方法来搜索超参数空间,以找到最佳的超参数组合,从而优化模型的性能并提高模型在测试数据上的表现。超参数是模型参数以外的我们能调整、可以选的参数都称为超参数,lr,线性模型还是多层感知机,模型有多少层,每层多大。总而言之,Optuna 在深度学习中表示一种用于自动化超参数优化的工具,能够帮助用户更高效地优化模型的性能,并提升模型的泛化能力和表现。样本不平衡,二分类数据比例1:9,数据集不很大的话,最好验证集上两类数据分布差不多,避免模型偏好数据占比较大的那一类,也可加权重避免。原创 2024-04-07 15:03:24 · 1150 阅读 · 0 评论 -
动手学深度学习9 多层感知机+代码实现
多层感知机+代码实现1. 感知机2. 多层感知机单隐藏层三个激活函数多隐藏层3. 代码实现从零开始实现简洁实现注意4. QA1. 感知机视频:https://www.bilibili.com/video/BV1hh411U7gn/?spm_id_from=autoNext&vd_source=eb04c9a33e87ceba9c9a2e5f09752ef8书:https://zh-v2.d2l.ai/chapter_multilayer-perceptrons/mlp.html课件:http原创 2024-03-18 17:29:19 · 1402 阅读 · 0 评论 -
动手学深度学习7 线性回归+基础优化算法
不使用框架提供的计算,使用简单tensor计算实现细节。# 绘图"""使用svg格式在Jupyter中显示绘图""""""设置matplotlib的图表大小"""# 构造人造数据集 知道真实的w b"""生成y=Xw+b+噪声"""X = torch.normal(0, 1, (num_expamples, len(w))) # 用于生成服从正态分布的随机数(mean,std,size,device,requires_grad)原创 2024-01-26 10:22:57 · 796 阅读 · 0 评论 -
动手学深度学习8 Softmax回归+损失函数+图片分类
当预测值和真实值离得比较远的时候,梯度为常数,权重更新不大,会带来很多稳定性的好处【不管多远,梯度以同样的力度向中间扯】。不好的地方,0点处不可导,从-1到+1的剧烈变化,平滑性差,当预测值和真实值靠的近,优化到了末期,这里可能变得不那么稳定。橙色曲线:导数–梯度,在大于0,导数为常数1,小于0,导数-1,在0点不可导,导数在(-1,1)之间瞬间变化。当预测值和真实值差距较小,到了优化末期,梯度会越来越小,保证优化是平滑的,避免出现数值的问题。当预测值和真实值差距较小,绝对值小于等于1的时候,是平方误差。原创 2024-01-26 18:39:37 · 1099 阅读 · 0 评论 -
动手学深度学习6 自动求导
y2XTX从入门到放弃说的就是这两节课~~~原创 2024-01-18 18:38:27 · 1134 阅读 · 0 评论 -
动手学深度学习5 矩阵计算
机器学习或深度学习中,导数 偏导数 微分 梯度 这些数学概念先了解一些方便理解。原创 2024-01-18 17:00:14 · 1098 阅读 · 0 评论 -
动手学深度学习4 线性代数
本节主要是介绍线性代数中 向量 矩阵的一些定义及计算规则。原创 2024-01-08 18:53:41 · 765 阅读 · 0 评论 -
动手学深度学习3 数据操作+数据预处理
课件: https://courses.d2l.ai/zh-v2/assets/pdfs/part-0_4.pdf视频:https://www.bilibili.com/video/BV1CV411Y7i4?p=1&vd_source=eb04c9a33e87ceba9c9a2e5f09752ef8稍微有一点数学基础,更方便理解。扩充到多维按逗号区分行列的处理操作按冒号区分每行每列处理操作,单独一个冒号表示该行或该列所有的值,两个连续的冒号表示步长索引从0开始课件:https://zh-v原创 2024-01-08 18:32:08 · 1146 阅读 · 0 评论 -
动手学深度学习1 导学
视频:最热方向:计算机视觉+自然语言处理+深度学习 三个方向的交叉融合图片分类物体检测和分割样式迁移人脸合成文字生成图片文字生成 chatgpt无人驾驶物体分割:更深层次的应用样式图片+内容图片–》合成新图片, 可以认为是内容图片加了样式滤镜案例: 广告点击。原创 2023-12-19 17:28:32 · 1030 阅读 · 0 评论 -
动手学深度学习2 安装环境
使用google colab工具,类似于jupyter notebook工具,每周有30H免费使用GPU。下载安装miniconda。原创 2023-12-19 18:35:16 · 712 阅读 · 0 评论