为您找到搜索结果:4687个
开源书籍-动手学深度学习PyTorch版
《动手学深度学习》(DiveintoDeepLearning)PyTorch版是一本开源的技术书籍,书籍和涉及的样例代码遵守apache2.0开源协议。本项目面向对深度学习感兴趣,尤其是使用PyTorch进行深度学习。不要求读者有任何深度学习或者机器学习的背景知识,只需了解基础的数学和编程,如基础的线性代数、微分和概率,以及基础的Python编程。DiveintoDeepLearning原书为MXNet实现,此版本改为PyTorch实现。(原书作者:阿斯顿·张、李沐、扎卡里C.立顿、亚历山大J.斯莫拉以及其他社区贡献者。)项目中主要包含code和docs两个文件夹(外加一些数据存放在data中)。其中code文件夹就是每章相关jupyternotebook代码(基于PyTorch);docs文件夹就是markdown格式的《动手学深度学习》书中的相关内容,然后利用docsify将网页文档部署到GitHubPages上,由于原书使用的是MXNet框架,所以docs内容可能与原书略有不同,但是整体内容是一样的。...
助力深度学习!阿里开源可插拔 GPU 共享调度工具
根据Gartner对全球CIO的调查结果显示,人工智能将成为2019年组织革命的颠覆性力量。对于人工智能来说,算力即正义,成本即能力,利用Docker和Kubernetes代表云原生技术为AI提供了一种新的工作模式,将GPU机器放到统一的资源池进行调度和管理,这避免了GPU资源利用率低下和人工管理的成本。因此,全球主要的容器集群服务厂商Kubernetes都提供了NvidiaGPU容器集群调度能力,但是通常都是将一个GPU卡分配给一个容器。这虽然可以实现比较好的隔离性,确保使用GPU的应用不会被其他应用影响;对于深度学习模型训练的场景也非常适合,但是,针对模型开发和模型预测的场景还是会显得比较浪费。基于此,大家有了共享GPU的集群调度需求。Kubernetes共享GPU集群调度共享GPU的集群调度就是能够让更多的模型开发和预测服务共享同一个GPU卡,进而提高集群中NvidiaGPU的利用率。而这就需要提供GPU资源的划分,而这里GPU资源划分的维度指的就是GPU显存和CudaKernel线程的划分。通常在集群级别谈支持共享GPU是以下两件事情:1.调度2.隔离,我们这里主要讨论的是调度...
阿里开源!轻量级深度学习端侧推理引擎 MNN
/阿里妹导读:近日,阿里正式开源轻量级深度学习端侧推理引擎“MNN”。AI科学家贾扬清如此评价道:“与Tensorflow、Caffe2等同时覆盖训练和推理的通用框架相比,MNN更注重在推理时的加速和优化,解决在模型部署的阶段的效率问题,从而在移动端更高效地实现模型背后的业务。这和服务器端TensorRT等推理引擎的想法不谋而合。在大规模机器学习应用中,考虑到大规模的模型部署,机器学习的推理侧计算量往往是训练侧计算量的十倍以上,所以推理侧的优化尤其重要。”MNN背后的技术框架如何设计?未来有哪些规划?今天一起来深入了解。MNN是一个轻量级的深度学习端侧推理引擎,核心解决深度神经网络模型在端侧推理运行问题,涵盖深度神经网络模型的优化、转换和推理。目前,MNN已经在手淘、手猫、优酷、聚划算、UC、飞猪、千牛等20多个App中使用,覆盖直播、短视频、搜索推荐、商品图像搜索、互动营销、权益发放、安全风控等场景,每天稳定运行上亿次。此外,菜鸟自提柜等IoT设备中也有应用。在2018年双十一购物节中,MNN在天猫晚会笑脸红包、扫一扫、明星猜拳大战等场景中使用。该项目已经在Github开源,关注“阿...
深度学习归一化:BN、GN与FRN
在深度学习中,使用归一化层成为了很多网络的标配。最近,研究了不同的归一化层,如BN,GN和FRN。接下来,介绍一下这三种归一化算法。BN层是由谷歌提出的,其相关论文为《BatchNormalization:AcceleratingDeepNetworkTrainingbyReducingInternalCovariateShift》,即Inceptionv2的主要思想。大家也可以看回我以前的博客,关于这个BN层的介绍。BN层的提出,主要解决的一个问题是InternalCovariateShift。在BN层提出以前,是很难训练一个深层次的网络的,其主要难点是每层的数据分布均会发生变化,使得神经元需要去学习新的分布,导致模型训练缓慢、难以收敛。因此,作者借助了白化的思想,将每层数据都归一化成均值为0、方差为1的分布,如公式(1)所示,即减去均值、除以方差。这样就能是每层的数据分布不会发生过大变化,从而导致模型容易训练。$$hat{x}^{(k)}=frac{x^{(k)}-E[x^{(k)}]}{sqrt{Var(x^{(k)})}}ag{1}$$但同时也引入了一个问题,我们将数据强行的归...
深度学习权重初始化
深度学习其本质是优化所有权重的值,使其达到一个最优解的状态,这其中,需要更新权重的层包括卷积层、BN层和FC层等。在最优化中,权重的初始化是得到最优解的重要步骤。如果权重初始化不恰当,则可能会导致模型陷入局部最优解,导致模型预测效果不理想,甚至使损失函数震荡,模型不收敛。而且,使用不同的权重初始化方式,模型最终达到的效果也是很不一样的。因此,掌握权重的初始化方式是炼丹师必备的炼丹术之一。在这里,我介绍一下深度学习中,我们常用的几种权重初始化的方式。 Xavier初始化方法提出于2010年的《Understandingthedifficultyoftrainingdeepfeedforwardneuralnetworks》中。Xavier初始化的方式其基本思想是“方差一致性”,即保持激活值的方差一致或者梯度的方差一致,这样有利于优化。基于该基本思想,作者假设每层的输入位于激活函数的线性区域,且具备零点对称的分布。首先,对于每个卷积层,其响应结果为:$$Y_l=W_lX_l+b_lag{1}$$其中,$X_l$是每层的输入参数,其shape为$(kimeskimesc)$,$k$...
深度学习之损失函数小结
在深度学习中,损失函数扮演着至关重要的角色。通过对最小化损失函数,使模型达到收敛状态,减少模型预测值的误差。因此,不同的损失函数,对模型的影响是重大的。接下来,总结一下,在工作中经常用到的损失函数:图像分类:交叉熵目标检测:Focalloss,L1/L2损失函数,IOULoss,GIOU,DIOU,CIOU图像识别:TripletLoss,CenterLoss,Sphereface,Cosface,Arcface在图像分类中,经常使用softmax+交叉熵作为损失函数,具体的推导可以参考我以前的博客。$$CrossEntropy=-sum_{i=1}^{n}p(x_i)ln(q(x_i))$$其中,$p(x)$表示真实概率分布,$q(x)$表示预测概率分布。交叉熵损失函数通过缩小两个概率分布的差异,来使预测概率分布尽可能达到真实概率分布。后来,谷歌在交叉熵的基础上,提出了labelsmoothing(标签平滑),具体介绍,可以参考这篇博客。/在实际中,需要用预测概率去拟合真实概率,而拟合one-hot的真实概率函数会带来两个问题:无法保证模型的泛化能力,容易造成过拟合;全概率和0概率鼓...
深度学习面试
1.列举常见的一些范数及其应用场景,如L0,L1,L2,L∞,Frobenius范数2.简单介绍一下贝叶斯概率与频率派概率,以及在统计中对于真实参数的假设。3.概率密度的万能近似器4.简单介绍一下sigmoid,relu,softplus,tanh,RBF及其应用场景5.Jacobian,Hessian矩阵及其在深度学习中的重要性6.KL散度在信息论中度量的是那个直观量7.数值计算中的计算上溢与下溢问题,如softmax中的处理方式8.与矩阵的特征值相关联的条件数(病态条件)指什么,与梯度爆炸与梯度弥散的关系9.在基于梯度的优化问题中,如何判断一个梯度为0的零界点为局部极大值/全局极小值还是鞍点,Hessian矩阵的条件数与梯度下降法的关系10.KTT方法与约束优化问题,活跃约束的定义11.模型容量,表示容量,有效容量,最优容量概念12.正则化中的权重衰减与加入先验知识在某些条件下的等价性13.高斯分布的广泛应用的缘由14.最大似然估计中最小化KL散度与最小化分布之间的交叉熵的关系15.在线性回归问题,具有高斯先验权重的MAP贝叶斯推断与权重衰减的关系,与正则化的关系16.稀疏表示,低...
MOT中的Data Association(三):基于深度学习的端到端数据关联
作者:黄飘链接:https://zhuanlan.zhihu.com/p/111397247来源:知乎近几年由于深度学习框架的兴起,端到端的训练和推理框架展现出一定的数据利用优势,而传统的数据关联算法基本都不满足可导可微的特性,因此出现了很多近似的端到端数据关联框架。这里由于篇幅有限,如果专栏和github的反响还可以,后续我会考虑单独开一个基于深度学习的数据关联算法专题,现在我只简要介绍几类出现的框架。我将近期出现的端到端数据关联框架大致可分为:多特征输入,输出关联矩阵这类框架只完成了数据关联的任务,即完成对多个目标的匹配,如PAMI2019中的DAN网络结构:这种框架就是典型的输入历史帧多条跟踪轨迹的特征和当前帧多个特征序列,输出多对多的关联矩阵,这种方式是通过形式的拟合来近似数据关联。又比如ICCV2019的FAMNet:这个框架将SOT和数据关联相集成。综上,这些方法虽然从形式上近似了数据关联算法,但是都要解决两个问题,一个是所有跟踪轨迹和观测的匹配交互,一个是如何过滤虚警和误检。可微数据关联模块这类框架就是讲传统不可微的数据关联模块改造成可微的模块,比...
深度学习中的五种归一化(BN、LN、IN、GN和SN)
BatchNormalization;LayerNormalizaiton;InstanceNormalization;GroupNormalization;SwitchableNormalization。whynormalization?神经网络学习过程的本质就是为了学习数据分布,如果我们没有做归一化处理,那么每一批次训练数据的分布不一样,从大的方向看,神经网络则需要在这多个分布中找到平衡点,从小的方向上看,由于每层网络输入数据分布在不断变化,这也会导致每层网络在找平衡点,显然,神经网络就很难收敛了。当然,如果我们只是对输入的数据进行归一化处理(比如将输入的图像除以255,将其归到0到1之间),只能保证输入层数据分布是一样的,并不能保证每层网络输入数据分布是一样的,所以也需要在神经网络的中间层加入归一化处理。BN、LN、IN和GN这四个归一化的计算流程几乎是一样的,可以分为四步: 1.计算出均值 2.计算出方差 3.归一化处理到均值为0,方差为1 4...
最简单的---了解深度学习训练搭建流程
importtorchimporttorchvisionimportmatplotlib.pyplotaspltimporttorch.nnasnnimporttorch.nn.functionalasFfromtorch.utils.dataimportDataLoaderfromtorchvision.transformsimporttransformsdevice=torch.device("cuda:0"iftorch.cuda.is_available()else"cpu")#定义ResBlock,见ResnetLearning图classResBlock(nn.Module):def__init__(self,in_channel,out_channel,stride=1,shortcut=None):super(ResBlock,self).__init__()self.left=nn.Sequential(nn.Conv2d(in_channel,out_channel,3,stride,1,bias=False),nn.BatchNorm2d(out_channel)...
算法工程师<深度学习基础>
<深度学习基础>卷积神经网络,循环神经网络,LSTM与GRU,梯度消失与梯度爆炸,激活函数,防止过拟合的方法,dropout,batchnormalization,各类经典的网络结构,各类优化方法1、卷积神经网络工作原理的直观解释https://www.zhihu.com/question/39022858简单来说,在一定意义上,训练CNN就是在训练每一个卷积层的滤波器。让这些滤波器组对特定的模式有高的激活能力,以达到CNN网络的分类/检测等目的。2、卷积神经网络的复杂度分析https://zhuanlan.zhihu.com/p/315750743、CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?https://www.zhihu.com/question/346811684、BP算法中为什么会产生梯度消失?https://www.zhihu.com/question/498120135、梯度下降法是万能的模型训练算法吗?https://www.zhihu.com/question/386773546、LSTM如何来避免梯度...
深度学习Bible学习笔记:第七章 深度学习中的正则化
一、正则化介绍问题:为什么要正则化? NFL(没有免费的午餐)定理: 没有一种ML算法总是比别的好 好算法和坏算法的期望值相同,甚至最优算法跟随机猜测一样 前提:所有问题等概率出现且同等重要 实际并非如此,具体情况具体分析,把当前问题解决好就行了 不要指望找到放之四海而皆准的万能算法!方差和偏差: 过拟合与欠拟合: 训练集和测试集机器学习目标: 特定任务上表现良好的算法 泛化能力强-->验证集上的误差小,训练集上的误差不大(不必追求完美,否则可能会导致过拟合)即可。如何提升泛化能力: (1)数据 数据和特征是上限,而模型和算法只是在逼近这个上限而已 预处理:离散化、异常值、缺失值等 特征选择 特征提取:pca 构造新的数据:平移不变性 (2)模型 数据中加入噪音 正则化项:减少泛化误差(非训练误差) 集成方法 几种训练情形: (1)不管真实数据的生成过程---欠拟合,偏差大 (2)匹配真实数据的生成过程---刚刚好 (3)不止真实数据的生成过程,还包含其他生成过...
Deep Learning系统实训之一:深度学习基础知识
K-近邻与交叉验证1选取超参数的正确方法是:将原始训练集分为训练集和验证集,我们在验证集上尝试不同的超参数,最后保留表现最好的那个。2如果训练数据量不够,使用交叉验证法,它能帮助我们在选取最优超参数的时候减少噪音。3一旦找到最优的超参数,就让算法以该参数在测试集跑且只跑一次,并根据测试结果评价算法。4最近邻分类器能够在CIFAR-10上得到将近40%的准确率。该算法简单易实现,但需要存储所有训练数据,并且在测试时过于消耗计算能力。5最后,我们知道了仅仅使用L1和L2范数来进行像素比较是不够的,图像更多的是按照背景和颜色被分类,而不是语义主体本身。 1预处理你的数据:对你数据中的特征进行归一化(normalize),让其具有零平均值(zeromean)和单位方差(unitvariance)。2如果数据是高维数据,考虑使用降维方法。如PCA。3将数据随机分入训练集和验证集。按照一般规律,70%-90%数据作为训练集。4在验证集上调优,尝试足够多的K值,尝试L1和L2两种范数计算方式。超参数(曼哈顿距离与欧氏距离):损失函数:任何一个算法都会有一个损失函数。我们希望损失为零,为什么...
深度学习Bible学习笔记:第六章 深度前馈网络
第四章数值计算(numericalcalculation)和第五章机器学习基础下去自己看。 一、深度前馈网络(DeepFeedfarwardNetwork,DFN)概要:DFN:深度前馈网络,或前馈神经网络(FFN)/多层感知机(MLP)目标:近似模拟某函数f y=f(x;θ) 学习参数θ的值,得到最佳的函数近似。 注:并非完美模拟大脑,只是实现统计泛化,函数近似机。源于大脑,但远远比不上大脑结构: f(x)=f(3)(f(2)(f(1)(x))) 前馈(feedforward):信息一直往下流动,一路向前,不回头。例如:CNN 反馈(feedbackward):前馈的扩展,增加反馈连接,走一段,回头看看。例如:RCNN线性模型: 优点:简单快速,线性回归和逻辑回归(广义线性回归) 局限性:受限于线性函数,无法表示任意变量间的相互作用非线性模型(扩展): 套上一层皮:非线性变换如何选择非线性变换?映射φ (1)找通用函数:高维,过拟合。 只要函数维度足够高,总能拟合训练集,然而,测试集泛化不佳 非通用函数基于局部光滑原则 (2...
深度学习Bible学习笔记:第二、三章 线性代数 概率与信息论
推荐资源:《线性代数的本质》:Essenceoflinearalgebra视频教程《数学之美》(科普类书籍),吴军系列书籍都不错。易向军《大嘴巴漫谈数据挖掘》,通俗生动,不枯燥。...