动手学深度学习:pytorch
文章平均质量分 92
以pytorch为主要编程工具,逐步学习深度学习中的基础理论和实现深度学习中的各种基础网络架构,同时分享打比赛的一些代码和思路。主要参考李沐老师《动手学深度学习 PyTorch版》课程。
留小星
持续更新 CV、NLP、语音、地震学领域深度学习相关阅读和学习笔记、手动实现各类深度学习网络结构(CNN、Transformer、GAN、DDPM、LLM)
展开
-
DIP: NAS(Neural Architecture Search)论文阅读与总结(双份快乐)
NAS-DIP就是用了一个RNN controller 强化学习模块搜索最合适的DIP网络架构:提供的两个网络模块搜索空间是Upsampling方法和大小Upsampling 分解和权重共享总结网络结构对传统DIP的效果有影响,搜索一个合适的网络结构可能对网络效果有很大的影响定性分析上采样结构、skip connection结构对DIP的影响很大,设置了搜索空间(包括upsampling方法、结构和skip connection结构等)提出了一种基于强化学习的网络结构搜索方法问题。原创 2023-08-12 09:31:46 · 1758 阅读 · 1 评论 -
DIP:《Denoising and Regularization via exploiting the structural Bias of Convolutional 》经典文献阅读总结与实现
重复一下贡献分析提出:Convolution Generator(无参数数量限制的Deep Decoder)能够解决逆问题的核心原因在于有固定的卷积核,bilinear upsampling可以看作是固定核的卷积利用NTK理论计算得到了网络去噪效果的上界,并通过上界公式中的迭代次数证明了过参数化网络可以通过 early stopping方法去噪NTK:描述无限宽深度神经网络在梯度下降训练过程中演化的核利用NTK理论证明了一个 双层convolution generator。原创 2023-08-11 13:02:24 · 406 阅读 · 0 评论 -
DIP:《Deep Decoder: Concise Image Representation from Untrained Non-convolut》文献阅读与总结
ICLR 2019工作 Deep Decoder只使用Encoder-Decoder结构中的Decoder进行探索对DIP的影响,分析了DIP结构对高频噪声的屏蔽效果,同时分析了使用欠参数网络模型对图片进行构造是可行的,一定程度上可以解决DIP训练效率低的问题。同时欠参数化的模型对于early stopping的需求没有那么强了,可以一定程度上解决DIP固有的这个问题。原创 2023-08-10 14:10:54 · 378 阅读 · 0 评论 -
DIP:《Deep Image Prior》经典文献阅读总结与实现
Deep Image Prior经典文献,利用CNN/网络的低频响应特征恢复信号过滤噪声。这种单张图片无监督方法去噪,脱离了海量数据需求,适应于那种稀有数据去噪、恢复、超分辨率等等类型的工作。除此之外这种方法为图像处理提出了新的解决思路(反演)。原创 2023-08-09 23:18:23 · 2446 阅读 · 1 评论 -
自监督去噪:Blind2Unblind原理分析与总结
CVPR 2022 Blind2UnBlind 自监督去噪文件原理分析与总结,基于Noise2Void,Noise2Self等方法提出的盲点网络方法,提出了循环损失函数和正则化方法,解决了盲点本身带来的信息丢失等问题。原创 2023-08-07 11:25:03 · 1300 阅读 · 2 评论 -
自监督去噪:Noiser2Noise原理分析
基于Noise2Noise,使用从单张噪声图片中采样的方法获取噪声对进行深度学习去噪原创 2023-08-03 09:23:06 · 3096 阅读 · 0 评论 -
自监督去噪:Noise2Self原理分析及实现 (Pytorch)
Noise2Self文章原理理解和代码解读,提供了一种盲点网络的思路用于无监督去噪原创 2023-08-04 15:00:27 · 3234 阅读 · 0 评论 -
自监督去噪:Noise2Void原理和调用(Tensorflow)
Noise2Void 原理推导,调用Tensorflow官方代码进行测试原创 2023-08-02 11:38:09 · 3156 阅读 · 3 评论 -
自监督去噪:Noise2Noise原理及实现(Pytorch)
noise2noise 不需要干净训练样本的去噪方法,原理解析及 pytorch实现原创 2023-07-30 19:45:30 · 5888 阅读 · 2 评论 -
自监督去噪:Recorrupted-to-Recorrupted原理分析与总结
Recorrupted-to-recorrupted 子监督去噪方法原理推导,这种方法基于单张含噪图片进行采样,在已知噪声模式的条件下可获得相对较好的去噪效果。提供了一种用于去噪的思路。原创 2023-08-06 10:35:52 · 1295 阅读 · 0 评论 -
自监督去噪:Neighbor2Neighbor原理分析与总结
Neighbor2Neighbor: 基于Noise2Noise自监督方法加入额外的正则化,从单张图片中采样噪声对进行训练。原创 2023-08-05 13:29:54 · 1328 阅读 · 0 评论 -
自监督去噪:self2self 原理及实现(Pytorch)
自监督去噪算法,self2self的原理及实现原创 2023-07-29 17:49:55 · 2702 阅读 · 0 评论 -
存在感逐渐降低的池化层——Pooling Layer总结
文章目录1. Pooling的作用2. 各种不同的Pooling1. max pooling(最大池化层)2. average pooling (平均池化层)3. Global Average Pooling(全局平均池化层)4. mix pooling(混合池化层)5. stochastic pooling(随机池化)6. Local Importance-based pooling(局部重要性池化层)7. Generalized-mean Polling layer(GeM池化层)3. 使用卷积替代池.原创 2022-04-27 17:51:22 · 3949 阅读 · 0 评论 -
动手学深度学习(五十)——多头注意力机制
文章目录1. 为什么用多头注意力机制2. 什么是多头注意力机制3. 多头注意力机制模型和理论计算4. 动手实现多头注意力机制层小结练习1. 为什么用多头注意力机制所谓自注意力机制就是通过某种运算来直接计算得到句子在编码过程中每个位置上的注意力权重;然后再以权重和的形式来计算得到整个句子的隐含向量表示。自注意力机制的缺陷就是:模型在对当前位置的信息进行编码时,会过度的将注意力集中于自身的位置, 因此作者提出了通过多头注意力机制来解决这一问题。2. 什么是多头注意力机制 在实践中,当给定原创 2022-02-21 19:35:39 · 79931 阅读 · 5 评论 -
动手学深度学习(四十九)——自注意力机制与位置编码
文章目录一、自注意力1. 自注意力2. 自注意力简单定义和使用3. 比较CNN、RNN和Self-Attetion3.1 CNN和self-attention3.2 RNN和self-attention二、位置编码绝对位置信息相对位置信息小结一、自注意力 在深度学习中,我们经常使用卷积神经网络(CNN)或循环神经网络(RNN)对序列进行编码。现在想象一下,有了注意力机制之后,我们将标记序列输入注意力池化中,以便同一组标记同时充当查询、键和值。具体来说,每个查询都会关注所有的“键-值”对并生成一个注意力原创 2022-02-19 14:29:11 · 3834 阅读 · 1 评论 -
动手学深度学习(四十八)——使用注意力机制的seq2seq
文章目录一、动机二、Bahdanau 注意力模型1. 定义Attention解码器2. 训练3. 使用BLEU评估4. 可视化权重总结一、动机机器翻译时,每个生成的词可能相关于源句子中不同的词二、Bahdanau 注意力 我们在seq2seq中研究了机器翻译问题,在那里我们设计了一个基于两个循环神经网络的编码器-解码器架构,用于顺序到序列的学习。具体来说,循环神经网络编码器将可变长度序列转换为固定形状的上下文变量,然后循环神经网络解码器根据生成的标记和上下文变量按标记生成输出(目标)序列标记。原创 2022-02-19 11:30:26 · 1367 阅读 · 0 评论 -
动手学深度学习(四十七)——注意力分数
文章目录一、注意力评分函数二、注意力分数高维拓展1. 可加性注意力2. 缩放的“点-积”注意力三、总结一、注意力评分函数f(x)=∑i=1nα(x,xi)yi=∑i=1nexp(−12(x−xi)2)∑j=1nexp(−12(x−xj)2)yi=∑i=1nsoftmax(−12(x−xi)2)yi.(1-1)\begin{aligned} f(x) &=\sum_{i=1}^n \alpha(x, x_i) y_i\\ &= \sum_{i=1}^n \frac{\exp\left(原创 2022-02-19 11:07:34 · 2536 阅读 · 0 评论 -
动手学深度学习(四十六)——注意力机制
一、注意力机制 灵长类动物的视觉系统中的视神经接受了大量的感官输入,其内容远远超过了大脑能够完全处理的程度。幸运的是,并非所有刺激的影响都是相等的。意识的聚集和专注使得灵长类动物能够在复杂的视觉环境中将注意力引向感兴趣的物体,例如猎物和天敌。只关注一小部分信息的能力具有进化意义,使人类得以生存和成功。 自 19 世纪以来,科学家们一直在研究认知神经科学领域的注意力。在本章中,我们将首先回顾一个热门框架,解释如何在视觉场景中展开注意力。受此框架中的 注意力提示(attention cues)的启发,我原创 2022-02-12 16:46:51 · 7347 阅读 · 0 评论 -
动手学深度学习(四十五)——束搜索
文章目录束搜索一、贪心搜索穷举搜索束搜索小结练习束搜索 在seq2seq中,我们逐个地预测输出序列的标记,直到预测序列中出现序列结束标记“<eos>”。在本节中,我们将首先对这种 贪心搜索(greedy search)策略进行介绍,并探讨其存在的问题,然后对比这种策略与其他替代策略:穷举搜索(exhaustive search)和束搜索(beam search)。 在正式介绍贪心搜索之前,让我们使用seq2seq中相同的数学符号定义搜索问题。在任意时间步 t′t't′,解码器输出 yt原创 2022-02-12 15:55:27 · 3660 阅读 · 2 评论 -
动手学深度学习(四十三)——机器翻译及其数据构建
文章目录一、机器翻译二、机器翻译数据集1. 下载和预处理数据集1.1 文本预处理1.2 词元化 [tokenization](https://zhuanlan.zhihu.com/p/371300063)1.3 词汇表( [word embedding](https://www.zhihu.com/question/32275069))2. 加载数据集小结练习 这篇Blog开始介绍翻译,都是NLP的相关内容,翻译和我们前面提到的序列预测(RNN、LSTM、GRU等等)、填空(Bi-RNN)等等有什么联系原创 2021-11-14 14:37:19 · 4499 阅读 · 0 评论 -
动手学深度学习(四十二)——双向循环神经网络(bi-RNN)
文章目录双向循环神经网络一、隐马尔可夫模型中的动态规划二、双向模型2.1 定义2.2 模型的计算成本及其应用三、双向循环神经网络的错误应用双向循环神经网络 在序列学习中,我们以往假设的目标是:到目前为止,在给定观测的情况下对下一个输出进行建模。例如,在时间序列的上下文中或在语言模型的上下文中。虽然这是一个典型的情况,但这并不是我们可能遇到的唯一情况。为了说明这个问题,考虑以下三个在文本序列中填空的任务:我 ___(高兴、饿了、很好…)。我 ___ 饿了(非常、一般、已经…)。我 ___ 饿了,原创 2021-11-13 09:47:33 · 6545 阅读 · 3 评论 -
动手学深度学习(四十一)——深度循环神经网络(Deep-RNN)
文章目录一、深度循环神经网络二、函数依赖关系三、简介实现3.1 网络构建3.2 训练与预测四、总结 本节非常简单,就是在RNN的基础上加了层的概念,毕竟之前讨论的RNN、GRU和LSTM我们都是在单层神经网络的基础上讨论的一、深度循环神经网络 到目前为止,我们只讨论了具有一个单向隐藏层的循环神经网络。其中,隐变量和观测值与具体的函数形式的交互方式是相当随意的。只要我们可以对不同的交互类型建模具有足够的灵活性,这就不是一个大问题。然而,对于一个单层来说,这可能具有相当的挑战性。在线性模型的情况下,我原创 2021-11-13 09:32:03 · 3360 阅读 · 0 评论 -
动手学深度学习(四十)——长短期记忆网络(LSTM)
文章目录一、长短期记忆网络(LSTM)1.1 门控记忆单元1.2 输入门、遗忘门与输出门1.3候选记忆单元1.4 记忆单元1.5 隐藏状态二、从零实现LSTM2.1 初始化模型参数2.2 定义网络模型2.3 训练和预测2.4 简洁实现小结练习一、长短期记忆网络(LSTM) 最早用来处理隐变量模型存在的长期信息保存和短期输入跳跃问题的方法(long short-term memory LSTM)。其拥有许多门控循环单元相同的属性。LSTM比GRU更复杂,但是其比GRU早诞生20年左右。1.1 门控记忆原创 2021-11-11 10:06:54 · 4453 阅读 · 0 评论 -
动手学深度学习(三十九)——门控循环单元GRU
文章目录门控循环单元(GRU)一、门控隐藏状态1.1 重置门和更新门1.2候选隐藏状态1.3 隐藏状态二、从零实现GRU2.1 初始化模型参数2.2 定义模型2.3 训练与预测2.4 简洁实现三、小结四、练习再次声明:本文主要参考李沐老师B站动手学深度学习课程进行笔记整理和代码复现。如果需要看视频,可以click。感谢沐神的分享!!!门控循环单元(GRU) 我们想想对于一个序列而言,有的早期观测值对所有的未来观测值都非常有用,有的观测值对所有的未来预测都没有用,或者说有的序列各个部分之间有逻辑中断。原创 2021-11-09 10:32:11 · 4686 阅读 · 0 评论 -
动手学深度学习(三十八)——从零开始实现循环神经网络RNN
文章目录1. 数据加载与转换1.1 加载Time machine这本书1.2 读取《星球大战》书籍数据集2. 初始化模型参数3. 循环神经网络模型4. 预测5. 梯度裁剪6. 训练小结练习【说明】:这里加载了两本书的数据,都是李沐沐神书中提到的数据。由于沐神封装的代码都是加载的《Time machine》,所以我是将前面两篇Blog的代码又在这里复写了一遍,用来加载《星球大战》数据集。后面的内容是对沐神课程和代码的一个复现。其中的知识点我会用黄色标出。%matplotlib inlineimport原创 2021-11-07 15:15:41 · 3257 阅读 · 0 评论 -
动手学深度学习(三十七)——循环神经网络
文章目录循环神经网络一、无隐藏状态的神经网络二、具有隐藏状态的循环神经网络三、基于循环神经网络的字符级语言模型四、困惑度(Perplexity)——衡量语言模型质量小结练习循环神经网络 在语言模型之中,我们介绍了nnn元语法模型,其中单词xtx_txt在时间步ttt的条件概率仅取决于前面n−1n-1n−1个单词。如果我们想将时间步t−(n−1)t-(n-1)t−(n−1)之前的单词的可能影响合并到xtx_txt上,我们需要增加nnn。但是,模型参数的数量也会随之呈指数增长,因为我们需要为词表V\m原创 2021-11-07 14:42:29 · 1491 阅读 · 0 评论 -
动手学深度学习(三十六)——语言模型和数据集
语言模型和数据集 在给定这样的文本序列时,语言模型(language model)的目标是估计序列的联合概率。P(x1,x2,…,xT).P(x_1, x_2, \ldots, x_T).P(x1,x2,…,xT). 语言模型是非常有用的。例如,只需要一次抽取一个标记 xt∼P(xt∣xt−1,…,x1)x_t \sim P(x_t \mid x_{t-1}, \ldots, x_1)xt∼P(xt∣xt−1,…,x1),一个理想的语言模型就能够基于模型本身生成自然文本。与猴子使用打原创 2021-10-30 17:02:18 · 2661 阅读 · 0 评论 -
动手学深度学习(三十五)——文本预处理(NLP)
文章目录文本预处理(Pre-processing)1. 读取数据集2. 标记化3. 词汇4. 整合上述功能总结文本预处理(Pre-processing)NLP中自然语言处理离不开对文本数据的预处理操作以方便后期神经网络的训练。通常文本预处理包含有:原始数据加载(raw data)分词(segmentation)数据清洗(Cleaning)数据标准化(Normalization):Stemming / Lemmazation特征提取(Feature extraction):tf-idf/wo原创 2021-10-27 17:31:14 · 2874 阅读 · 2 评论 -
动手学深度学习(三十四)——序列模型
文章目录序列模型一、什么是序列模型二、序列模型的统计工具2.1 自回归模型1.2 马尔可夫模型1.3 因果关系二、马尔科夫假设MLP模型训练三、模型预测四、 总结序列模型一、什么是序列模型 想象一下你正在看 Netflix(一个国外的视频网站)上的电影。作为一个很棒的 Netflix 用户,你决定对每一部电影都给出评价。毕竟,一部好的电影值得好电影的称呼,而且你想看更多的好电影,对吧?事实证明,事情并不那么简单。随着时间的推移,人们对电影的看法会发生很大的变化。事实上,心理学家甚至对某些效应起了名字原创 2021-10-27 11:42:34 · 1575 阅读 · 2 评论 -
动手学深度学习(三十三)——样式迁移
文章目录一、基于CNN的样式迁移1. 直观理解样式迁移2. 基于CNN的样式迁移方法二、样式迁移实现1. 阅读内容和样式图像2. 预处理和后处理3. 抽取图像特征4. 定义损失函数4.1 内容损失4.2 样式损失4.3 总变差损失4.4 总损失加权5. 初始化合成图像6. 模型训练三、总结一、基于CNN的样式迁移1. 直观理解样式迁移 如果你是一位摄影爱好者,你也许接触过滤镜。它能改变照片的颜色样式,从而使风景照更加锐利或者令人像更加美白。但一个滤镜通常只能改变照片的某个方面。如果要照片达到理想中的原创 2021-10-21 09:51:55 · 2880 阅读 · 1 评论 -
动手学深度学习(三十二)——全连接卷积神经网络FCN
文章目录1. 什么是全卷积神经网络(Fully Convolutional Networks)2. FCN是语义分割的奠基性工作3. 使用FCN进行语义分割3.1 模型构建3.2 初始化转置卷积层3.3 读取数据集3.4 训练3.5 预测参考:【1】https://zh-v2.d2l.ai/【2】https://zhuanlan.zhihu.com/p/30195134【3】https://www.sohu.com/a/270896638_6336981. 什么是全卷积神经网络(Fully Con原创 2021-10-18 21:29:51 · 2374 阅读 · 0 评论 -
动手学深度学习(三十一)——转置卷积
文章目录一、转置卷积1.1 基本操作1.2 为什么称之为"转置"1.3 实现二维转置卷积和调用高级API实现更高维度转置卷积1.4 填充、步幅和多通道1.4.1 填充1.4.2 步幅1.4.3 多通道1.5 转置卷积与矩阵变换的关系二、小结一、转置卷积 通常情况下,卷积神经网络如卷积层和池化层都会减少下采样输入图像的空间维度(高和宽)。然而如果输入和输出图像的空间维度相同,在以像素分类的语义分割中将会更加方便。(比如输出像素所处位置的通道维可以保有输入像素在同一位置上的分类结果)卷积不增大输入的高原创 2021-10-17 21:44:32 · 2939 阅读 · 0 评论 -
动手学深度学习(三十)——语义分割概念及数据加载
文章目录一、什么是语义分割二、应用三、Pascal VOC2012语义分割数据集3.1 数据加载3.2 数据预处理3.3 自定义语义分割数据集类3.4 整合全部组件简单认识什么是语义分割,并加载语义分割数据集一、什么是语义分割在像素级别上的分类:属于同一类的像素都要归为一类语义分割和实例分割二、应用背景虚化路面分割三、Pascal VOC2012语义分割数据集http://host.robots.ox.ac.uk/pascal/VOC/voc2012/3.原创 2021-10-18 09:34:35 · 1392 阅读 · 0 评论 -
动手学深度学习(二十九)——SSD目标检测算法理论到实践
一、SSD目标检测算法SSD(单发多框检测)设计理念参考:这篇Blog讲得非常详细了,我也从中学会了很多:https://zhuanlan.zhihu.com/p/33544892SSD和Yolo一样都是采用一个CNN网络来进行检测,但是却采用了多尺度的特征图,其基本架构如图所示。下面将SSD核心设计理念总结为以下三点:1.1 采用多尺度特征图用于检测 所谓多尺度采用大小不同的特征图,CNN网络一般前面的特征图比较大,后面会逐渐采用stride=2的卷积或者pool来降低特征图大小,这正如上图原创 2021-09-21 22:46:31 · 3276 阅读 · 2 评论 -
动手学深度学习(二十八)——目标物体检测+多尺度目标检测
文章目录1.多尺度目标检测1.多尺度目标检测多尺度目标检测方法可以大致分为三类:将多层特征进行组合后进行预测PVANET(NIPSW16)分别在不同的层进行预测RFBnet(CVPR18)组合以上两种方法FPN(CVPR17)Faster R-CNN对应图b,SSD对应图c,FPN对应图d这里我们采用SSD的方法进行讨论,首先我们针对一张任意的feature map进行分析。假设我们以输入像素为中心生成多个锚框,561*728的图像每个像素5个大小不同的锚框,最终会生成超过200万个锚框原创 2021-09-21 21:22:21 · 2418 阅读 · 0 评论 -
玩转Kaggle:Classify Leaves(叶子分类)——模型设计与训练
文章目录一、数据加载二、模型构建与训练1. resnet2. resnext 趁假期的最后一天填上kaggle叶子分类的坑,本来想把这个比赛的成绩刷到95%以上再写这篇Blog记录的,但是后面学习工作比较多,刷比赛可能并不是很划算。这里基于Charlesyyun提供的baseline代码进行了模型设计和训练。主体思路其实没什么多说的,只是通过比赛可以将之前学到的东西融合整理起来,这能够较大地提高动手的能力。7th: ResNeSt+ResNeXt+DenseNet (0.98840)数据分析请参考前原创 2021-09-04 22:41:54 · 5496 阅读 · 12 评论 -
玩转Kaggle:Dog Breed Identification【识别狗的类别】
文章目录1. Kaggle数据集介绍2. 下载数据和数据整理(kaggle官网即可)3. 图像增广4. 加载数据5.微调模型6.可视化validation数据7. 输出测试结果并提交kaggle1. Kaggle数据集介绍狗的类别识别:https://www.kaggle.com/c/dog-breed-identification我们将识别 120 类不同品种的狗。 这个数据集实际上是著名的 ImageNet 的数据集子集。 数据分布: 2. 下载数据和数据整理(kaggle官网即可)im原创 2021-09-02 17:37:04 · 9547 阅读 · 13 评论 -
玩转Kaggle:CIFAR-10图像分类
文章目录1. CIFAR-10简介2. 获取并组织数据集3. 图像增广4. 数据读取5. 模型定义6. 训练模型7. 测试生成提交结果1. CIFAR-10简介(比赛网址 https://www.kaggle.com/c/cifar-10)数据集描述: 比赛数据集分为训练集和测试集,其中训练集包含 50000 张、测试集包含 300000 张图像。在测试集中,10000 张图像将被用于评估,而剩下的 290000 张图像将不会被进行评估,包含它们只是为了防止手动标记测试集并提交标记结果。 两个原创 2021-09-02 13:50:45 · 3782 阅读 · 5 评论 -
动手学深度学习(二十七)——微调(fine turning)
文章目录一、微调(fine tuning)1. 微调的四个步骤:2. 微调的训练过程3. 常用的微调技术4. 总结二、动手实现和测试微调1. 数据准备2. 模型微调3. 对比不使用微调和不同的微调参数4. 冻结层进行微调一、微调(fine tuning)1. 微调的四个步骤:在源数据集(如ImageNet数据集)上预训练一个神经网络模型,即源模型。创建一个新的神经网络模型,即目标模型。它复制了源模型上除了输出层外的所有模型设计及其参数。我们假设这些模型参数包含了源数据集上学习到的知识,且这些知识同原创 2021-08-31 22:26:39 · 23879 阅读 · 6 评论 -
动手学深度学习(二十六)——图像增广(一生二,二生三,三生万物?)
文章目录一、图像增广二、常用的图像增广方法1. 翻转和裁减2. 颜色改变3. 叠加使用多种数据增广方法三、使用图像增广进行训练一、图像增广解释:通过对训练图像做一系列随机改变,来产生相似但又不同的训练样本,从而扩大训练数据集的规模。随机改变训练样本可以降低模型对某些属性的依赖,从而提高模型的范化能力二、常用的图像增广方法使用下面这张400x500的图像作为范例%matplotlib inlineimport matplotlib.pyplot as pltimport numpy as原创 2021-08-31 16:41:41 · 4610 阅读 · 0 评论