深度学习
cdknight_happy
种一棵树最好的时间是十年前,其次是现在!
展开
-
pyTorch中的学习率衰减
1 学习率衰减深度学习模型训练过程中,经过一定的epoch之后,模型的性能趋于饱和,此时降低学习率,在小范围内进一步调整模型的参数,可以进一步提升模型的性能。经过多年的发展,也出现了多种学习率衰减算法,比如线性衰减、指数衰减、cosine衰减等,下面将pyTorch中提供的学习率衰减算法进行整理。2 PyTorch中的学习率衰减pyTorch官方介绍:https://pytorch.org/docs/stable/optim.htmltorch.optim.lr_scheduler提供了多种依据训原创 2020-10-30 13:59:18 · 4226 阅读 · 0 评论 -
SyncBN及其pyTorch实现
1 SyncBN原理1.1 BNBN操作可以描述成:y=x−E[x]var[x]+ϵ∗γ+βy = \frac{x - E[x]}{\sqrt{var[x] + \epsilon}}* \gamma + \betay=var[x]+ϵx−E[x]∗γ+β使用BN的好处是:训练时在网络内部进行了归一化,为训练过程提供了正则化,防止了中间层feature map的协方差偏移,有助于抑制过拟合。使用BN,不需要特别依赖于初始化参数,可以使用较大的学习率,因此可以加速模型的训练过程。下面内容参考自:h原创 2020-10-30 09:09:12 · 8440 阅读 · 1 评论 -
CSPNet
论文:https://arxiv.org/pdf/1911.11929.pdf代码:https://github.com/WongKinYiu/CrossStagePartialNetworks原创 2020-10-22 16:37:55 · 1552 阅读 · 0 评论 -
模型解释 -- Guided-Backpropagation、CAM、Grad-CAM、Grad-CAM++ 及 pyTorch Hook
1 pyTorch Hook本节内容引用自:https://zhuanlan.zhihu.com/p/75054200首先贴一段维基百科中对钩子的定义:钩子编程(hooking),也称作“挂钩”,是计算机程序设计术语,指通过拦截软件模块间的函数调用、消息传递、事件传递来修改或扩展操作系统、应用程序或其他软件组件的行为的各种技术。处理被拦截的函数调用、事件、消息的代码,被称为钩子(hook)。Hook 是 PyTorch 中一个十分有用的特性。利用它,我们可以不必改变网络输入输出的结构,方便地获取、改变网原创 2020-09-25 17:58:55 · 6210 阅读 · 7 评论 -
激活函数总结
1 激活函数的作用神经网络的某一层的输入和权重进行内积操作后,需要经过激活函数进行变换处理。一般神经网络中用到的激活函数都是非线性函数,这是因为多个连续的线性变换仍然是输入的线性变换。使用非线性激活函数可以增强模型的拟合能力,经过多个非线性激活函数对输入的连续处理后,可以拟合任意复杂的变换过程,完成图像分类、检测等任务。1 饱和激活函数饱和激活函数是指在网络训练过程中,因为输入处于激活函数的饱和位置而有可能造成梯度弥散的激活函数,饱和激活函数包括了sigmoid、tanh和hard-sigmoid原创 2020-08-15 17:51:12 · 853 阅读 · 0 评论 -
深度学习中常用的图像增广
1 过拟合及其解决方案机器学习中一个模型能够提供的信息一般来自于两个方面:训练数据中隐含的信息;模型训练过程中提供的先验信息。当训练数据不足时,来自于训练数据的隐含信息数量不足,就需要更多的先验信息才能保证模型的效果。先验信息可以作用在模型上,例如让模型采用特定的内部结构、条件假设或添加一些约束条件。先验信息也可以作用在数据集上,即根据特定的先验假设去调整、变换或扩展训练数据,让其展现出更多更有用的信息,以便于后续模型的训练或学习。在图像分类任务上,训练数据不足容易造成模型的过拟合。过拟合表现原创 2020-06-27 09:24:32 · 1028 阅读 · 0 评论 -
CNN中的深度可分离卷积、组卷积、逐层卷积、空洞卷积、转置卷积、可变形卷积
参考:https://zhuanlan.zhihu.com/p/28749411https://blog.csdn.net/Chaolei3/article/details/793745631 普通卷积CNN中的普通卷积是三维卷积,每个卷积核的通道数和输入数据通道数相同,卷积核的个数为输出数据的通道数。具体的计算过程为在各通道进行卷积核和对应感受野输入数据的对应位置相乘再相加操作,得到一个...转载 2019-12-18 19:14:04 · 3548 阅读 · 3 评论 -
keras使用总结及踩坑(持续中)
1 训练调用函数参考:https://blog.csdn.net/xovee/article/details/91357143训练调用函数共三个,分别为fit,fit_generator和train_on_batch。前面两个可以通过callbacks实现学习率衰减、启用tensorboard及记录训练过程中的模型,train_on_batch比较难以实现这些功能。fit和fit_gene...原创 2019-11-22 18:31:21 · 702 阅读 · 0 评论 -
Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics
论文:https://arxiv.org/abs/1705.07115v31 问题引出多任务联合学习可以提升各任务的学习效果,因为多任务可以共享数据集、共享低层特征。但多任务联合学习时,该如何对各子任务的损失函数进行加权才能取得最优的训练效果,这是本文所关心的问题。本文中作者提出的多任务如下图所示:对各任务的损失确定加权系数wiw_iwi可以有多种方式,把这些系数作为超参数进行调试的代价...原创 2019-10-18 11:45:29 · 11692 阅读 · 17 评论 -
RNN理论
循环神经网络(Recurrent Neural Network,RNN)适用于处理序列数据。就像卷积神经网络是专门用于处理网格化数据(如图像)的网络,可以很容易的地扩展到具有很大宽度和高度的图像,以及可以处理大小可变的图像。循环网络适合于处理x(1),⋯ ,x(τ)x^{(1)},\cdots,x^{(\tau)}x(1),⋯,x(τ)这样的序列输入,大多数循环网络都可...原创 2019-07-06 18:20:34 · 1648 阅读 · 0 评论 -
LPRNet: License Plate Recognition via Deep Neural Networks
论文:https://arxiv.org/abs/1806.10447?context=cs代码:https://github.com/sirius-ai/LPRNet_Pytorch0 摘要本文提出了LPRNet - 无需进行初步的字符分割的端到端自动车牌识别方法。我们的方法受到深度神经网络近期突破的启发,对中国车牌识别准确度高达95%,可以实时处理,在NVIDIA GeForce GT...原创 2019-07-08 11:43:57 · 10174 阅读 · 2 评论 -
一文搞懂交叉熵在机器学习中的使用,透彻理解交叉熵背后的直觉
转载自: https://blog.csdn.net/tsyccnh/article/details/79163834交叉熵(cross entropy)是深度学习中常用的一个概念,一般用来求目标与预测值之间的差距。以前做一些分类问题的时候,没有过多的注意,直接调用现成的库,用起来也比较方便。最近开始研究起对抗生成网络(GANs),用到了交叉熵,发现自己对交叉熵的理解有些模糊,不够深入。遂花了几...转载 2018-11-17 16:54:09 · 232 阅读 · 0 评论 -
机器学习之分类器性能指标之ROC曲线、AUC值
转载自:http://blog.csdn.net/zdy0_2004/article/details/44948511 机器学习之分类器性能指标之ROC曲线、AUC值 转载 2015年04月08日 23:01:2转载 2018-02-01 17:36:10 · 332 阅读 · 0 评论 -
A guide to convolution arithmetic for deep learning学习笔记
1.综述本文章是对深度学习中出现的各种类型的卷积进行汇总。https://github.com/vdumoulin/conv_arithmetichttp://deeplearning.net/software/theano_versions/dev/tutorial/conv_arithmetic.html#transposed-convolution-arithmetic ...原创 2017-12-26 09:26:25 · 3492 阅读 · 1 评论 -
deeplearning.ai学习笔记:第一课第一周
1 什么是神经网络 ?上图是传统意义上的神经网络。输入层、隐藏层、输出层;我们没有指定神经网络各隐藏单元的含义,只是给定了输入,也明确了输入的含义,由神经网络自己来确定各隐藏单元的含义;全连接的神经网络,连接数很多。2 用神经网络做监督学习监督学习:给定了数据集,我们知道正确的输出该是什么,并且相信输入和输出之间存在联系。目的就是训练神经网络找到输入和输出之间的正确联系。不同...原创 2018-12-12 21:25:49 · 160 阅读 · 0 评论 -
深度学习中的梯度下降优化算法综述
1 简介梯度下降算法是最常用的神经网络优化算法。常见的深度学习库也都包含了多种算法进行梯度下降的优化。但是,一般情况下,大家都是把梯度下降系列算法当作是一个用于进行优化的黑盒子,不了解它们的优势和劣势。本文旨在帮助读者构建各种优化算法的直观理解,以帮助你在训练神经网络的过程中更好的使用它们。本文第二部分先简单叙述了常见的梯度下降优化算法;第三部分叙述了神经网络训练过程中存在的挑战;第四部分,我...原创 2018-12-06 16:05:59 · 1934 阅读 · 0 评论 -
deeplearning.ai学习笔记:第一课第四周
1 深层神经网络参数:W[l]∈Rnl×nl−1W^{[l]} \in R^{n_l \times n_{l-1}}W[l]∈Rnl×nl−1b[l]∈Rnl×1b^{[l]} \in R^{n_l \times 1}b[l]∈Rnl×1dW[l]∈Rnl×nl−1dW^{[l]} \in R^{n_l \times n_{l-1}}dW[l]∈Rnl×nl−1db[l]∈R...原创 2018-12-20 22:01:58 · 265 阅读 · 0 评论 -
deeplearning.ai学习笔记:第一课第二周
1 二分类m样本数目,n样本特征数目建议使用的符号表示X=[∣∣∣   x(1)x(2)⋯x(m)   ∣∣∣]∈Rn×m    y=[y(1)y(2)⋯y(m原创 2018-12-15 21:56:25 · 270 阅读 · 0 评论 -
deeplearning.ai学习笔记:第一课第三周
1 神经网络的表示在计算神经网络的层数时,一般不把输入层计算在内。如一个由输入层、单隐藏层、输出层组成的神经网络,一般叫做是两层的神经网络。上述单隐藏神经元的神经网络,神经元要做两件事情,一是计算z=wTx+bz = w^Tx+bz=wTx+b,即计算输入和权重的内积;二是应用非线性激活函数,计算a=σ(z)a = \sigma(z)a=σ(z),增强神经网络的表达能力。对第一个隐藏层神...原创 2018-12-16 21:21:10 · 275 阅读 · 0 评论 -
deeplearning.ai第二课第一周:深度学习实用技巧
1 训练/验证/测试集机器学习/深度学习中,一般会把数据集分为训练集(training set)、验证集(validation set/development set,dev set)、测试集(test set)三部分。训练集用于对模型进行训练;验证集用于对单一指标进行确定,如选择算法,确定参数;测试集用于对最终的模型性能进行评估。传统机器学习中,样本量有限,可能是100,1000,1000...原创 2018-12-23 13:20:25 · 282 阅读 · 0 评论 -
deeplearning.ai第三课:结构化机器学习项目
1 正交化正交化的含义是在设计系统时,应该使得系统一个组件/参数的变化对另一个组件/参数的影响尽可能小。这样就可以相对简单的实验系统的各个组成部分,可以减小系统的验证和测试时间。开发一个有监督机器学习系统时,应该依次序完成四件事情:训练集要对代价函数拟合的很好,如果拟合的不好,可以尝试规模更大的网络结构或者尝试使用更好的优化算法;验证集要对代价函数拟合的很好,如果拟合的不好,可以尝试添加...原创 2019-01-04 22:23:54 · 585 阅读 · 0 评论 -
deeplearning.ai第二课第二周:优化算法
本文作为对https://blog.csdn.net/cdknight_happy/article/details/84835809的补充。1 mini-batch梯度下降算法批梯度下降法持续收敛,但每一轮迭代的计算太耗时;随机梯度下降使用单个样本计算损失,波动较大;mini-batch进行以小batch为单位的梯度下降,既可以利用向量化带来的计算优势,又可以避免随机梯度下降过程中太大的波动。...原创 2018-12-25 22:09:59 · 184 阅读 · 0 评论 -
deeplearning.ai第二课第三周:超参数调试、BN层
1 超参数调试不同的超参数有不同的重要程度。比如,学习率一般最重要,momentum中的β\betaβ值、隐藏单元数量、mini-batch的size次之,隐藏层的数量、权重衰减规则更次之。至于Adam中,一般都是用β1=0.9,β2=0.999,ϵ=10−8\beta_1 = 0.9,\beta_2 = 0.999,\epsilon = 10^{-8}β1=0.9,β2=0.999,ϵ=1...原创 2018-12-31 21:01:38 · 416 阅读 · 0 评论 -
deeplearning.ai第四课第一周:卷积神经网络
1 计算机视觉计算机视觉包含的典型任务有:图像分类;目标检测;图像风格转换。计算机视觉任务的特点是输入数据量较大,对于一副1000 * 1000 * 3的图像而言,需要的输入神经元数量为3百万。假如第一隐藏层有1000个神经元,那么W[1]∈R1000×3MillionW^{[1]} \in R^{1000 \times 3Million}W[1]∈R1000×3Million,如此...原创 2019-01-06 16:39:57 · 586 阅读 · 0 评论 -
deeplearning.ai第四课第三周:目标检测
1 目标定位目标定位用于确定目标在图像中的位置。检测 = 分类 + 定位;定位:图像左上角(0,0),右下角(1,1);图像定位输出四个值,分别为bx,by,bw,bhb_x,b_y,b_w,b_hbx,by,bw,bh;bx,by,bw,bh∈(0,1)b_x,b_y,b_w,b_h \in (0,1)bx,by,bw,bh∈(0,1)。定位也是一个有监督的任务,对...原创 2019-01-17 21:31:15 · 217 阅读 · 0 评论 -
高效的二维卷积实现
转载 2017-12-16 13:10:32 · 1279 阅读 · 0 评论 -
深度学习 读书笔记 第一章
引言计算机擅长处理那些能够通过一系列形式化的数学规则来描述的问题;人工智能的真正挑战在于处理那些对人来说很容易执行、但很难形式化描述的任务,人工智能的一个关键挑战就是如何将这些非形式化的知识传达给计算机。 解决方案就是让计算机从经验中学习,并根据层次化的概念体系来理解世界,而每个概念则通过与某些相对简单的概念之间的关系来定义,这种方法即AI深度学习。机器学习要输入的数据为原始信息的表示,表示的选择原创 2018-04-14 12:42:27 · 455 阅读 · 0 评论