
李沐动手学深度学习
文章平均质量分 56
李沐动手学深度学习
AI架构师易筋
工作10+年,AI方向架构师,曾经任职阿里巴巴,世界500强HSBC。擅长大模型LLM原理、架构、深度学习、Transformer、算法、数据结构、设计模式。易筋乃阿里巴巴花名。
展开
-
深度学习结课总结和进阶学习 优化算法 动手学深度学习v2
1. 优化算法2. 课程总结和进阶学习感谢沐神参考https://www.bilibili.com/video/BV1bP4y1p7Gq/?spm_id_from=autoNext原创 2022-05-21 09:40:06 · 302 阅读 · 0 评论 -
BERT微调 自然语言推理数据集 BERT微调代码实现 动手学深度学习v2
1. BERT微调2. 自然语言推理数据集3. BERT微调代码4. Q&A神经网络可以跨语言,跨领域。比如自然语言,视觉都在用Transformer。5. 目标检测竞赛总结参考https://www.bilibili.com/video/BV15L4y1v7ts/?spm_id_from=autoNext...原创 2022-05-21 08:09:50 · 657 阅读 · 0 评论 -
BERT预训练 动手学深度学习v2
1. BERT预训练 Transformer 编码器2. BERT 代码3. BERT预训练数据代码4. BERT预训练代码5. Q&A参考https://www.bilibili.com/video/BV1yU4y1E7Ns/?spm_id_from=autoNext原创 2022-05-20 08:47:48 · 285 阅读 · 0 评论 -
自注意力 self attention Transformer 多头注意力代码 Transformer 代码 动手学深度学习v2
1. 自注意力 self attention2. 自注意力 self attention 代码实现3. Transformer4. 多头注意力代码5. Transformer 代码6.Q&Atransformer 特别适合应用到芯片上。参考https://www.bilibili.com/video/BV19o4y1m7mo?p=1...原创 2022-05-16 08:41:57 · 716 阅读 · 0 评论 -
Attention使用注意力机制的seq2seq 动手学深度学习v2
1. Attention使用注意力机制的seq2seq2. Attention使用注意力机制的seq2seq 代码实现3. Q&Aattention在搜索的时候,是在当前句子搜索。一般都是在decoder加入注意力机制?不一定的,BERT就是在encoder中加入attention。图像attention,就是从图片抽取patch,也就一小块一小块,作为attention。参考https://www.bilibili.com/vide原创 2022-05-15 08:23:56 · 464 阅读 · 0 评论 -
注意力机制 attention 注意力分数 动手学深度学习v2
1. 注意力机制 attention2. 注意力机制 attention 代码实现3. 注意力分数4. 注意力打分函数实现5. Q&Amasked_softmax() 把填充padding的值,求softmax的时候,padding位置的值都设置为0.参考https://www.bilibili.com/video/BV1264y1i7R1?p=1...原创 2022-05-15 07:51:17 · 381 阅读 · 0 评论 -
序列到序列学习 seq2seq 束搜索 beam search 动手学深度学习v2
1. 序列到序列学习 seq2seq2. 代码实现3. 束搜索 beam search4. Q&A现在seq2seq 都用transformer了。但是过段时间, 有可能又会发现可能RNN/LSTM会更好。深度神经网络是一波又一波的。参考https://www.bilibili.com/video/BV16g411L7FG?p=1...原创 2022-05-14 09:00:41 · 294 阅读 · 0 评论 -
机器翻译数据集 编码器-解码器架构以及实现 动手学深度学习v2
1. 机器翻译数据集2. 编码器-解码器架构3. 编码器-解码器 代码实现参考https://www.bilibili.com/video/BV1H64y1s7TH/原创 2022-05-12 07:32:16 · 306 阅读 · 0 评论 -
长短期记忆网络 LSTM 深层循环神经网络 Deep RNN 双向循环神经网络 Bidirectional RNN 动手学深度学习v2
1. 长短期记忆网络 LSTM2. 长短期记忆网络 LSTM 代码实现3. 深层循环神经网络 Deep RNN4. 深层循环神经网络 Deep RNN 代码实现5. Q&ANLP挺好找工作的,因为文本比图片工作的数量比较多。比如,抽取财报的关键信息。深层RNN,每层都需要一个初始hidden state.参考https://www.bilibili.com/video/BV1JU4y1H7PC?p=1...原创 2022-05-11 19:38:25 · 378 阅读 · 0 评论 -
门控循环单元 GRU 动手学深度学习v2
1. 门控循环单元 GRU不是每个元素都很重要,比如猫重复了很多次,只有第一次看到猫才比较重要,其它的猫可以被忘记掉。老鼠只出现一次,但也是很重要的。2. 代码实现简洁实现3. Q&AGRU相比RNN多了很多参数,但是GRU比RNN更稳定,也就是不会导致梯度爆炸。RNN在长文本的时候效果不好,所以用GRU,LSTM效果会比较好,能做到100左右。超过100可以用BERT。参考https://www.bilibili.com/video/BV原创 2022-05-10 08:09:23 · 205 阅读 · 0 评论 -
循环神经网络 RNN 从零开始实现 动手学深度学习v2 pytorch
1. 循环神经网络 RNN2. Q&AGPT3, BERT 都是基于Transformer模型的改进,目前也是最火的。voice和image融合算法,用多模态模型。比如自动驾驶领域的运用。参考https://www.bilibili.com/video/BV1D64y1z7CA/...原创 2022-05-08 09:10:47 · 456 阅读 · 0 评论 -
语言模型language models 动手学深度学习v2
1. 语言模型 language models猴子随机打出来莎士比亚的作品,时间大概要多久呢? – 宇宙爆炸都打不出来。2. 代码实现3. Q&Asequence sample (token 是word),一般32位效果会比较好。要考虑模型的复杂度,和产品综合考虑。参考https://www.bilibili.com/video/BV1ZX4y1F7K3?p=1...原创 2022-05-08 08:29:04 · 351 阅读 · 0 评论 -
序列模型 sequence model 文本预处理 动手学深度学习v2
1. 序列模型 sequence model2. 代码实现3. Q&ARNN 可以认为跟隐马尔科夫假设上建模的。later variable潜变量 是不存在, hidden variable隐变量是存在,只是看不到。MLP可以记住了过去数据的模式,然后去用这个模式去画出未来的趋势。如果仅仅是记住数据,泛化性会不好,导致过拟合。预测波音飞机的零件的坏的概率,有几百个参数。这里的困难点是在,要收集到足够多的负类。否则,都是正类数据,预测出原创 2022-05-06 07:20:36 · 608 阅读 · 0 评论 -
样式迁移 Style Transfer 动手学深度学习v2
1. 样式迁移 Style Transfer2. 代码实现3. Q&A越靠近输出端内容还原度越高。不需要算梯度,y.detach(), 是因为网络不更新。核心优化的是一个参数矩阵,每做一张图片的风格一样,都要重新训练一遍。后面用GAN来实现,就一劳永逸了。GAN能够以假乱真,就是一个滤镜,视频剪辑上有商业应用。4. 课程竞赛:牛仔行头检测参考https://www.bilibili.com/video/BV1Eh41原创 2022-05-04 07:53:24 · 643 阅读 · 0 评论 -
全连接卷积神经网络 FCN fully convolutional network 动手学深度学习v2
1. 全连接卷积神经网络 FCN fully convolutional network2. 代码实现3. Q&ARCNN 系列精度比较高,速度会慢点。U-Net就是用小的转置卷积有更好的效果。参考https://www.bilibili.com/video/BV1af4y1L7Zu?p=1...原创 2022-05-03 08:22:01 · 1091 阅读 · 0 评论 -
转置卷积 Transpose Convolution 动手学深度学习v2 pytorch
1. 转置卷积 Transpose Convolution转置卷积是一种卷积2. 代码实现卷积Y的shape: (X.shape[0] - h + 1, X.shape[1] - w + 1)转置卷积Y的shape: (X.shape[0] + h - 1, X.shape[1] + w 1 1)3. Q&A转置卷积得出的结果含义时什么?希望把图片的像素变大。转置卷积又被翻译为反卷积。小照片放大,或者模糊图片细化原创 2022-05-03 07:50:35 · 824 阅读 · 0 评论 -
语义分割semantic segmentation和数据集 动手学深度学习v2
1. 语义分割semantic segmentation语义分割是类的识别,比如狗和猫;实例分割是实体的分割,比如狗1,狗2,和猫。2. 语义分割数据集 Pascal VOC2012图片分割不能用resize,比如红色表示飞机,如果resize的变成淡红色,有可能对应不到飞机,那就出错了。crop可以达到resize的效果。3. Q&A识别狗头可以做到的,一般用关键点识别,比如人脸识别应用就很火。语义分割在识别人,是比较成熟的,可以googl原创 2022-05-02 10:16:34 · 1514 阅读 · 0 评论 -
SSD Single shot detection 单发多框检测 实现 多尺度锚框 动手学深度学习v2
1. 多尺度锚框2. SSD Single shot detection 单发多框检测 实现num_classes + 1 表示分类数 + 背景数channel先挪到最后bbox_masks 表示如果是背景框的时候,是0,否则是1.只关心非背景的边框。3. Q&Anum_inputs 输入的通道数,num_anchors每个像素的锚框数。 w*h*num_anchors*(num_class+1)像素比较大图片,SSD会炸原创 2022-05-01 10:19:42 · 1257 阅读 · 0 评论 -
物体检测算法:R-CNN,SSD,YOLO 动手学深度学习v2 pytorch
1. 物体检测算法:R-CNNRegion-CNN 区域卷积神经网络2. SSD Single shot detection 单发多框检测3. YOLO - you only look onceyou only live once --> you only look oncecenter_net 非锚框 物体检测4. Q&A测试数据增强做平均,一般是概率做平均,在softmax上做平均。ROI会把图片压变形。参考ht原创 2022-04-30 07:55:15 · 661 阅读 · 2 评论 -
锚框 anchor box bounding box 动手学深度学习v2 pytorch
1. 锚框 bounding boxIoU交并比: Interception of unitJacquard指数2. 代码实现3. Q&A一个锚框只对应一个真是框。每个像素选择5、7、9个锚框的比较多。参考https://www.bilibili.com/video/BV1aB4y1K7za?p=1...原创 2022-04-29 07:41:19 · 799 阅读 · 0 评论 -
物体检测object detection object recognition和coco数据集 动手学深度学习v2 pytorch
1. 物体检测object detection object recognition 和数据集物体检测的应用 比 图片识别的应用多得多,物体检测的更实用。比如无人车,自动驾驶,自动售货机识别物体。COCO: https://cocodataset.org80个物体。2. 边缘框代码实现3. 数据集4. Q&A无人车用的硬件光学雷达 Lidar,识别度会很高。特斯拉比较激进用的摄像头,识别率会比较高,人的识别率在于95%,所以机器要高于这个水平。原创 2022-04-28 07:39:30 · 3401 阅读 · 0 评论 -
实战 Kaggle 比赛:狗的品种识别(ImageNet Dogs) 动手学深度学习v2 pytorch
1. Kaggle 比赛:狗的品种识别 ImageNet Dogshttps://www.kaggle.com/c/dog-breed-identification2. Q&Ascale 和 ratio 是超参数,需要调试,也可以到kaggle里面搜索。test_transform 上,为什么要resize到256,在中心裁剪到224? 以前的效果比较好,所以就拿过来用了。autoML / autoDL 可以尝试应用调参,比较方便。学术上用的帮助不原创 2022-04-27 08:57:25 · 2050 阅读 · 0 评论 -
实战 Kaggle 比赛:图像分类(CIFAR-10) 动手学深度学习v2
1. 实战 Kaggle 比赛:图像分类(CIFAR-10)https://www.kaggle.com/c/cifar-102. Q&A凸函数表示有最优解。损失函数是个凸函数,但是神经网络大多数都是非凸的,一般神经网络是没有最优解的。momentum表示把曲线变得平滑一点。Scheduler 前期选择的学习率大一点,后期学习率变小一点。类似年轻的时候多出去看看。sgd 相当于做了regular的作用,所以sgd比别的算法好一点。原创 2022-04-26 08:57:59 · 2278 阅读 · 0 评论 -
翻译: 4.4. 模型选择Model Selection、欠拟合Underfitting和过拟合Overfitting pytorch
作为机器学习科学家,我们的目标是发现模式。但是我们怎么能确定我们真的发现了一个普遍的模式,而不是简单地记住我们的数据呢?例如,假设我们想在将患者与其痴呆状态联系起来的遗传标记中寻找模式,其中标签是从集合中提取的{dementia, mild cognitive impairment, healthy} . 因为每个人的基因唯一地识别他们(忽略相同的兄弟姐妹),所以可以记住整个数据集。我们不希望我们的模型说“那是 Bob!我记得他!他得了老年痴呆症!” 原因很简单。以后我们部署模型的时候,会遇到模型从来没有原创 2022-04-25 22:39:45 · 798 阅读 · 0 评论 -
fine-tune 微调 Transfer learning 迁移学习 动手学深度学习v2
1. Fine-tuning 微调 Transfer learningFine-tuning 微调是整个深度学习领域是最重要的技能。如果前面的知识只能选择一个,那就是微调了。Transfer learning迁移学习,就是可以用别的成功网络的参数等来训练跟你相似的模型。简单来说是重用。跟详细知识请参考: Transfer learning 迁移学习指南2. 代码实现3. Q&Afine tuning和transfer training实际上是同原创 2022-04-25 07:48:27 · 478 阅读 · 0 评论 -
数据增广Data Augmentation 动手学深度学习v2
1. 数据增广Data Augmentationhttps://www.github.com/aleju/imgaug2. 代码实现3. Q&A原始样本如果数量和多样性足够多,是不需要数据增广。现实中,数据很大达到数量和多样性都足够多的。金融分控领域,诈骗的数据比较少,所以需要做数据增广。图神经网络,目前不好训练,落地还比较难。 – 2021-06-20数据增广实际上是增大了偏差,不改变数据的均值。原创 2022-04-24 08:51:11 · 374 阅读 · 0 评论 -
深度神经网络 分布式训练 动手学深度学习v2
GPU到GPU的多条通讯带宽PCIe在63GB/s, GPU到CPU的通信只有一条带宽PCIe在15.75GB/s, 跨机器通信通过内部网络通信速度在于1.25GB/s. 所以优先在GPU内部处理数据,次优先级是传递到CPU,最差优先级是跨机器计算。SGD Synchronize GDbatchSize越大,训练的有效性曲线是下降的。batchSize的数据在diverse 多样性的情况下,数据越多,学习到的特征也是更多的,所以训练的有效性会更好。...原创 2022-04-24 07:51:39 · 354 阅读 · 0 评论 -
深度神经网络硬件 GPU单机多卡并行 动手学深度学习v2
1. 单机多卡并行GPU 安装靠得太紧,容易烧掉。下面这张图,用了一个月就烧掉了一块GPU。参考https://www.bilibili.com/video/BV1vU4y1V7rd/?spm_id_from=trigger_reload原创 2022-04-20 07:56:25 · 946 阅读 · 0 评论 -
深度学习硬件:TPU, DSP, FPGA, AI ASIC, Systolic Array 动手学深度学习v2
1. TPU和其他1.1 手机芯片1.2 DSP digital signal processor 数字信号处理1.3 可编程阵列 FPGA - field-programmable gate array1.4 AI ASIC - Application-specific integrated circuitsSystolic ArrayFPGA 华为用了很多去做路由器。造一个芯片出来,必须有生态,开发生态和研究人员的生态,也就是有很多人在优化编译原创 2022-04-20 07:45:26 · 583 阅读 · 0 评论 -
深度学习硬件:CPU 和 GPU 动手学深度学习v2
1. 深度学习硬件:CPU 和 GPU2. Q & A增加数据,可以提高泛化性。AlexNet用到全连接层, ResNet 比AlexNet更小;但是ResNet的运算量比AlexNet 更大。深度神经网络,添加层数 也是 超参数。硬件的发展是遵循摩尔定律,计算量前期是指数型。对应的增长时间,复杂度图如下。参考https://www.bilibili.com/video/BV1TU4y1j7Wd/?spm_id_from原创 2022-04-19 10:01:39 · 826 阅读 · 0 评论 -
残差网络 ResNet 为什么能训练出1000层的模型 动手学深度学习v2
1. 残差网络 ResNet假设你在CNN卷积神经网络中只了解一个什么网络,那就是残差网络 ResNet。ResNet 是一个很简单,也很有用的网络。增加更多的层总是改进精度吗?不一样,比如左边的图F6比F3,距离目标函数f*更远,所以效果是更差的。残差块 f(x) = x + g(x)https://cv.gluon.ai/model_zoo/classification.html2. 代码实现10个epoch,train acc 0.996, test acc原创 2022-04-16 07:48:29 · 2826 阅读 · 0 评论 -
批量归一化Batch Normalization 动手学深度学习v2
1. 批量归一化Batch Normalization2016年左右出来的2. 代码实现对比没有加BN 之前的效果,收敛没那么好参考https://www.bilibili.com/video/BV1X44y1r77r?p=1原创 2022-04-15 07:40:42 · 432 阅读 · 0 评论 -
含并行连结的网络 GoogLeNet / Inception V3 动手学深度学习v2 pytorch
1. 含并行连结的网络 GoogLeNet第一个神经网络可以做到超过100层。Inception 块的名字,取自盗梦空间,就是不断深入到梦境中,不断深入。Inception 使得参数减少,计算量也变低了。比直接用3x3 Conv,5x5 Conv 卷积更小。https://cv.gluon.ai/model_zoo/classification.htmlInception V3精度比VGG高很多,从0.7提升到接近0.8, 内存会大很多,而且比较复杂。沐神的网络ResN原创 2022-04-14 07:57:59 · 1978 阅读 · 0 评论 -
网络中的网络 NiN 动手学深度学习v2 pytorch
1. 网络中的网络 NiN网络中的网络 NiN 是基于AlexNet的尝试改进,去掉全连接层。网络中的网络 NiN 后面被使用的不多,但是去掉全连接层的思想 被采用。全连接层最大的问题是用很多内存占用很大的计算带宽收敛很快,但是会导致过拟合2. 代码实现3. Q&Anvidia-smi是nvidia 的系统管理界面,其中smi是System management interface的缩写,它可以收集各种级别的信息,查看显存使用情况。AlexN原创 2022-04-13 08:33:07 · 1184 阅读 · 0 评论 -
使用块的网络 VGG 动手学深度学习v2 pytorch
1. 使用块的网络 VGGhttps://cv.gluon.ai/model_zoo/classification.html2. 代码实现VGG 网络测试准确度对比:VGG test acc 0.917AlexNet test acc 0.883LeNet test acc 0.827对比一下 AlexNet的精确度3. Q&AVGG把网络做的模块化,可以训练更深的网络,更简单,可配置都是未来的趋势。参考https://www.bilibili.c原创 2022-04-13 08:00:05 · 1615 阅读 · 0 评论 -
CNN深度卷积神经网络 AlexNet 动手学深度学习v2 pytorch
深度卷积神经网络 AlexNet在1990~2001年,SVM Support Vector Machine是最主流的方法特征提取选择核函数计算相似性凸优化问题漂亮的定理计算机视觉的问题描述成几何学问题抽取特征描述集合(例如多相机)非凸优化漂亮定理如果假设满足了,效果很好2005年左右最出名的方法是特征工程特征工程是关键特征描述子:SIFT,SURF视觉词袋(聚类)最后用SVM机器学习从1920~2020年数据,内存,CPU增长的变化数据和计算能力的增长,导原创 2022-04-12 07:05:23 · 277 阅读 · 0 评论 -
经典卷积神经网络 LeNet 动手学深度学习v2 pytorch
1. 经典卷积神经网络 LeNet2. 代码实现对比 MLP 的精度,差不多,精度80%+3. Q&A为什么用view而不用reshape呢?view和reshape没有什么大的区别,reshape会更快一点。MLP数据比较大跑不动,所以要用CNN。如果能用MLP会更快。输出通道增多,表示可以识别的纹理信息更多。池化层一般用max还是avg,如果是识别物品种类,比如猫狗,max可能会好点。如果是做平滑滤镜,avg会更好。原创 2022-04-11 07:29:21 · 586 阅读 · 0 评论 -
CNN 卷积神经网络 池化层Pooling 动手学深度学习v2 pytorch
Pooling 池化层常用的池化层最大池化层平均池化层2. 代码实现池化层的效果最主要是通过步幅stride,使得减小位置敏感性。后来的实现,Pooling用的越来越少,因为在channel里面加stride也可以达到一样的效果,并且增加对图片的各种转置和偏移,效果会更好。参考https://www.bilibili.com/video/BV1EV411j7nX/?p=1...原创 2022-04-10 07:28:57 · 843 阅读 · 0 评论 -
CNN卷积层里的多输入多输出通道channel 动手学深度学习v2 pytorch
1. CNN卷积层里的多输入多输出通道channel多个通道concate起来1.1 多个输入和输出通道每个输出通道可以识别特别模式输入通道卷积核识别并组合输入中的模式1 x 1 卷积层,它不识别空间模式,等于融合通道,等价于做个全连接层MLP。等于3个通道,reshape为一维的向量。2. 从零开始手写代码实现3. pytorch 简介实现参考https://www.bilibili.com/video/BV1MB4y1F7of?p=1...原创 2022-04-09 09:03:17 · 1655 阅读 · 0 评论 -
卷积层里的填充Padding和步幅Stride 动手学深度学习v2 pytorch
卷积层的超参数:Kernel卷积核的大小填充Padding步幅Stride1. 卷积层里的填充Padding2 卷积层里的步幅Stride3. 代码实现3. Q&A超参数 核大小,填充一般是核大小-1,步幅一般看是否需要优化计算的速度。卷积核的变长一般选奇数,方便计算。一般大家直接用经典的网络结构,比如 ResNet 用的居多。机器学习本质就是压缩的算法,机器学习永远都会丢失信息的,跟信息论是一样的。底层用大Ke原创 2022-04-08 09:37:49 · 984 阅读 · 0 评论