机器学习&深度学习
文章平均质量分 95
分享机器学习&深度学习的相关知识,欢迎交流评论
雷恩Layne
大家好,我是雷恩,雷恩的雷,雷恩的恩!
展开
-
基于SA-Conv-CTC/Attention端到端语音识别模型的基本原理、实现方法和主要流程
文章目录摘要1. 引言2. 模型描述2.1 混合编码器2.2 位置编码器2.3 SA-Conv-CTC/Attention架构2.4 带有SA-LM的混合解码器3. 实验3.1 数据集介绍3.2 实验细节3.3 评价准则3.4 实验结果4. 结论摘要我们知道,传统的语音识别系统分为三大组件,分别是词汇字典、声学模型和语言模型,这使得我们不得不单独训练声学和语音模型[1]。近年来,端到端(E2E)语音识别系统越来越受欢迎,与传统的语音识别系统不同,E2E语音识别系统直接将输入的语音转换成字符或单词,只基于原创 2021-07-20 16:25:41 · 2343 阅读 · 3 评论 -
使用yolov5训练自动驾驶目标检测数据集BDD100K
文章目录一、什么是BDD100K二、数据预处理三、环境配置四、修改模型结构五、迁移学习六、训练BDD100K七、评估性能八、结语一、什么是BDD100KBDD100K是伯克利发布的开放式驾驶视频数据集,其中包含10万个视频和10个任务(因为把交通灯的颜色也区分了出来,实际上是13类分类任务),目的是方便评估自动驾驶图像识别算法的的进展。该数据集具有地理,环境和天气多样性,从而能让模型能够识别多种场景,具备更多的泛化能力。由于硬件限制,我只里训练其中的图片数据,数据集按Train、Valid、Test三原创 2021-07-20 14:40:32 · 16130 阅读 · 38 评论 -
使用HybridSN进行高光谱图像分类
一、前言高光谱图像(Hyperspectral image,以下简称HSI)分类广泛应用于遥感图像的分析,随着深度学习和神经网络的兴起,越来越多的人使用二维CNN对HSI进行分类,而HSI分类性能却高度依赖于空间和光谱信息,但由于计算复杂度增加,很少有人将三维CNN应用于HSI分类中。这篇 Exploring 3-D–2-D CNN Feature Hierarchy for Hyperspectral Image Classification构建一种混合网络(HybridSN)解决了HSI分类所遇到的问原创 2021-01-05 17:16:57 · 4575 阅读 · 5 评论 -
使用VGG迁移学习开启《猫狗大战挑战赛》
文章目录一、前言二、加载数据集三、数据预处理四、构建VGG模型五、训练VGG模型六、保存与测试模型七、总结一、前言猫狗大战挑战由Kaggle于2013年举办的,目前比赛已经结束,不过仍然可以把AI研习社猫狗大战赛平台作为练习赛每天提交测试结果,该平台数据集包含猫狗图片共24000张,没有任何标注数据,选手需要训练模型正确识别猫狗图片,1= dog,0 = cat。这里使用在 ImageNet 上预训练的 VGG 网络模型进行测试,因为原网络的分类结果是1000类,所以要进行迁移学习,对原网络进行 fin原创 2020-11-20 20:48:41 · 817 阅读 · 1 评论 -
轻量级神经网络MobileNet全家桶详解
本文是转载文章,转载自从MobileNet看轻量级神经网络的发展,删除了文中冗余的部分,并加入许多自己的理解,通过引入具体的计算更清晰的反映出轻量级神经网络MobileNet的本质。文章目录前言MobileNet的优势MobileNet各版本介绍MobileNetV1网络结构MobileNetV2网络结构MobileNetV3网络结构MobileNet各版本特性深度卷积(Depthwise convolution)逐点卷积(Pointwise Convolution)深度可分离卷积(Depthwise.转载 2020-09-05 15:54:53 · 52756 阅读 · 20 评论 -
为什么MobileNet及其变体(如ShuffleNet)会变快?
本文是转载文章,转载自深入剖析:为什么MobileNet及其变体(如ShuffleNet)会变快?,删除了文中冗余的部分,并加入许多自己的理解,通过引入具体的计算更清晰的反映出轻量级神经网络的本质。文章目录前言高效CNN使用的组成部分卷积分组卷积(Grouped Convolution)深度卷积(Depthwise Convolution)Channel Shuffle高效的CNN模型ResNet (Bottleneck Version)ResNeXtMobileNet (Depthwise Sepa.转载 2020-09-05 11:44:11 · 1210 阅读 · 1 评论 -
DenseNet密集卷积网络详解(附代码实现)
文章目录前言Dense BlockGrowth rateBottleneckTransition layer压缩因子DenseNet网络结构DenseNet优缺点Pytorch实现DenseNet前言DenseNet是CVPR2017的最佳论文,由康奈尔大学黄高博士(Gao Huang)、清华大学本科生刘壮(Zhuang Liu)、Facebook 人工智能研究院研究科学家 Laurens van der Maaten 及康奈尔大学计算机系教授 Kilian Q. Weinberger 所作,有兴趣的同原创 2020-09-03 17:20:30 · 25044 阅读 · 4 评论 -
细粒度分析与Bilinear CNN model(附代码实现)
前言有时,我们逛街时看到不同的狗,却不知道其具体品种,看到路边开满鲜花,却傻傻分不清具体是什么花。实际上,类似的问题在实际生活中屡见不鲜,人类尚且如此,更别说人工智能了。为了解决这一问题,研究者们提出了细粒度分析(fine-grained image analysis)这一专门研究物体精细差别的方向。细粒度分析细粒度分析任务相较于通用图像(general/generic images)任务的区别和难点在于其图像所属类别的粒度更为精细。下图为例,通用图像分类其任务诉求是将“袋鼠”和“狗”这两个物体大类(原创 2020-09-02 19:43:49 · 9830 阅读 · 16 评论 -
RuntimeError: CUDA out of memory(已解决)
今天用pytorch训练神经网络时,出现如下错误:RuntimeError: CUDA out of memory. Tried to allocate 144.00 MiB (GPU 0; 2.00 GiB total capacity; 1.29 GiB already allocated; 79.00 MiB free; 1.30 GiB reserved in total by PyTorch)明明 GPU 0 有2G容量,为什么只有 79M 可用? 并且 1.30G已经被PyTorch占用了。原创 2020-09-01 17:21:25 · 125011 阅读 · 48 评论 -
ResNet残差网络及变体详解(符代码实现)
前言ResNet(Residual Network, ResNet)是微软团队开发的网络,它的特征在于具有比以前的网络更深的结构,在2015年的ILSVRC大赛中获得分类任务的第1名。网络的深度对于学习表达能力更强的特征至关重要的。CNN能够提取low/mid/high-level的特征,网络的层数越多,意味着能够提取到不同level的特征越丰富。并且,越深的网络提取的特征越抽象,越具有语义信息,特征的表示能力就越强。但是,随着网络深度的增加,所带来的的问题也是显而易见的,主要有以下几个方面:增加原创 2020-08-28 22:14:30 · 9522 阅读 · 1 评论 -
深入解读GoogLeNet网络结构(附代码实现)
前言七夕了,看着你们秀恩爱,单身狗的我还是做俺该做的事吧!在上一篇文章中介绍了VGG网络结构,VGG在2014年ImageNet 中获得了定位任务第1名和分类任务第2名的好成绩,而同年分类任务的第一名则是GoogleNet 。GoogleNet是Google研发的深度网络结构,之所以叫“GoogLeNet”,是为了向“LeNet”致敬,有兴趣的同学可以看下原文Going Deeper with Convolutions。与VGGNet模型相比较,GoogleNet模型的网络深度已经达到了22层(原创 2020-08-25 22:04:25 · 34131 阅读 · 22 评论 -
深入解读VGG网络结构(附代码实现)
VGGNet由牛津大学的视觉几何组(Visual Geometry Group)提出,并在2014年举办的ILSVRC(ImageNet 2014比赛)中获得了定位任务第1名和分类任务第2名的好成绩,(GoogleNet 是2014 年的分类任务第1 名)。虽然VGGNet在性能上不及GoogleNet,但因为VGG结构简单,应用性强,所以很多技术人员都喜欢使用基于VGG 的网络。VGG论文Very deep convolutional networks for large-scale image re原创 2020-08-24 23:13:00 · 6043 阅读 · 1 评论 -
【超详细】对比10种优化函数BGD、SGD、mini-batch GD、Momentum、NAG、Adagrad、RMSProp、Adadelta、Adam、AMSgrad
在实践中常用到一阶优化函数,典型的一阶优化函数包括 BGD、SGD、mini-batch GD、Momentum、Adagrad、RMSProp、Adadelta、Adam 等等,一阶优化函数在优化过程中求解的是参数的一阶导数,这些一阶导数的值就是模型中参数的微调值。另外,近年来二阶优化函数也开始慢慢被研究起来,二阶方法因为计算量的问题,现在还没有被广泛地使用。深度学习模型的优化是一个非凸函数优化问题,这是与凸函数优化问题对应的。对于凸函数优化,任何局部最优解即为全局最优解。几乎所有用梯度下降的优化方法都原创 2020-08-13 16:44:59 · 2148 阅读 · 0 评论 -
从Inception到Xception,卷积方式的成长之路!
2014年Google提出了多尺度、更宽的Inception网络结构,不仅比同期的VGG更新小,而且速度更快。Xception则将Inception的思想发挥到了极致,解开了分组卷积和大规模应用的序幕。本文将详细讲述Inception v1的多尺度卷积和Pointwise ConvInception v2的小卷积核替代大卷积核方法Inception v3的卷积核非对称拆分Bottleneck卷积结构Depthwise Separable Conv深度可分离卷积多尺度卷积Inception原创 2020-08-06 15:30:41 · 3757 阅读 · 3 评论 -
Alexnet网络结构逐层详细分析+代码实现
在2012年Imagenet比赛冠军—Alexnet (以第一作者Alex命名)直接刷新了ImageNet的识别率,奠定了深度学习在图像识别领域的优势地位。网络结构如下图:下面分别对每层进行介绍:(1)Input 层:为输入层,AlexNet卷积神经网络默认的输入数据必须是维度为224×224×3的图像,即输入图像的高度和宽度均为224,色彩通道是R、G、B三个。(2)Conv1 层:为AlexNet的第1个卷积层,使用的卷积核为(11*11*3)*96(卷积核大小为11*11,输入通道为3,输出原创 2020-08-06 11:04:26 · 5381 阅读 · 0 评论 -
深入理解ReLU、Leaky ReLU、 PReLU、ELU、Softplus
ReLUReLU(Rectified Linear Unit,修正线性单元),也叫Rectifier 函数,它的定义如下:Relu可以实现单侧抑制(即把一部分神经元置0),能够稀疏模型, Sigmoid 型活tanh激活函数会导致一个非稀疏的神经网络,而Relu大约 50% 的神经元会处于激活状态,具有很好的稀疏性。Relu函数右侧线性部分梯度始终为1,具有 宽兴奋边界的特性 (即兴奋程度可以非常高),不会发生神经网络的梯度消失问题, 能够加速梯度下降的收敛速度。而tanh和sigmoid在离0点原创 2020-08-05 15:50:42 · 11523 阅读 · 0 评论 -
深入理解dropout(原理+手动实现+实战)
在这篇博客中你可以学到什么是dropoutdropout为什么有用dropout中的多模型原理手动实现dropout在pytorch中使用dropout当训练一个深度神经网络时, 我们可以随机丢弃一部分神经元(同时丢弃其对应的连接边)来避免过拟合,这种方法就称为dropout(丢弃法)。每次选择丢弃的神经元是随机的.最简单的方法是设置一个固定的概率 p.对每一个神经元都以概率 p 随机丢弃(即置0),其原理如下:上图,Bernoulli是概率p的伯努利分布,取值为0或1,即该分布中的每原创 2020-08-05 11:03:48 · 19810 阅读 · 0 评论 -
卷积神经网络CNN与LeNet5详解(可训练参数量、计算量、连接数的计算+项目实战)
文章目录神经网络CNN卷积神经网络CNN的由来局部感受野共享权重池化CNN的结构光栅化LeNet5详解LeNet5-C1层LeNet5-S2层LeNet5-C3层LeNet5-S4层LeNet5-C5层LeNet5-F6层LeNet5-OUTPUT层计算公式LeNet5实战定义网络模型初始化模型参数训练测试准确率预测结果神经网络神经网络可以看成一个端到端的黑盒,中间是隐藏层(可以很深),两边是输入与输出层,完整的神经网络学习过程如下:定义网络结构(指定输入层、隐藏层、输出层的大小)初始化模型参数原创 2020-07-28 18:36:17 · 13596 阅读 · 6 评论 -
万字详解决策树之ID3、CART、C4.5【原理+实例+代码实现】
文章目录决策树的含义(信息熵+信息增益)&ID3(纯度+基尼系数)&CART信息增益率&C4.5各种决策树比较与总结决策树编程实战调用sklearn库实现回归决策树手动实现ID3决策树使用sklearn库回归决策树预测boston房价使用sklearn库分类决策树对iris分类决策树的含义首先我们先来了解下什么是决策树。上图就是一颗带有决策的树,其中天气、温度等称为特征,后面问号的位置称为阈值,如温度=35°,则阈值为35。决策树是一种基本的分类与回归方法。这里主要讨论决原创 2020-07-27 19:57:48 · 2567 阅读 · 1 评论 -
k-means及k-means++原理【python代码实现】
前言k-means算法是无监督的聚类算法,实现起来较为简单,k-means++可以理解为k-means的增强版,在初始化中心点的方式上比k-means更友好。k-means原理k-means的实现步骤如下:从样本中随机选取k个点作为聚类中心点对于任意一个样本点,求其到k个聚类中心的距离,然后,将样本点归类到距离最小的聚类中心,直到归类完所有的样本点(聚成k类)对每个聚类求平均值,然后将k个均值分别作为各自聚类新的中心点重复2、3步,直到中心点位置不在变化或者中心点的位置变化小于阈值优点:原创 2020-07-26 21:57:50 · 6046 阅读 · 1 评论 -
手推公式带你轻松理解L1/L2正则化
文章目录前言L1/L2正则化原理从数学的角度理解L1/L2正则化从几何的角度理解L1/L2正则化L1/L2正则化使用情形前言L1/L2正则化的目的是为了解决过拟合,因此我们先要明白什么是过拟合、欠拟合。过拟合:训练出的模型在测试集上Loss很小,在训练集上Loss较大欠拟合:训练出的模型在测试集上Loss很大,在训练集上Loss也很大拟合:训练的刚刚好,在测试集上Loss很小,在训练集上Loss也很小现在,让我们开启L1/L2正则化正则化之旅吧!L1/L2正则化原理L1与L2正则是通原创 2020-07-24 21:10:06 · 2795 阅读 · 0 评论 -
numpy和torch数据类型转化问题
在实际计算过程中,float类型使用最多,因此这里重点介绍numpy和torch数据float类型转化遇到的问题,其他类型同理。文章目录numpy数据类型转化torch数据类型转化numpy和tensor互转numpy数据类型转化numpy使用astype转化数据类型,float默认转化为64位,可以使用np.float32指定为32位#numpy转化float类型a= np.array([1,2,3])a = a.astype(np.float)print(a)print(a.dt.原创 2020-07-24 09:33:45 · 18734 阅读 · 1 评论 -
Batch Normalization:批量归一化详解
文章目录为什么要使用BNBN的工作原理BN的优点PyTorch中使用BN层BN的弊端为什么要使用BN在深度学习中,层数很多,可能有几十层甚至上百层,每次训练激活的过程中,参数不断改变,导致后续每一层输入的分布也发生变化,而学习的过程就是要使每一层适应输入的分布,如果不做BN就会使模型学的很小心,也会使学习速率变慢,因此我们不得不降低学习率、小心地初始化。那怎么才能让我们的模型学习的更高效呢?原有的方式可能是歪着学的,学的效果不是很好,如下图B所示,现在我们需要让它激活到一个更适合学习的位置上,那就需原创 2020-07-23 23:08:24 · 5142 阅读 · 0 评论 -
数据预处理:归一化/标准化详解
前言一般而言,样本的原始特征中的每一维特征由于来源以及度量单位不同,其特征取值的分布范围往往差异很大,比如身高、体重、血压等它们的度量和分布范围往往是不一样的。当我们计算不同样本之间的欧氏距离时,取值范围大的特征会起到主导作用。这样,对于基于相似度比较的机器学习方法(比如最近邻分类器),必须先对样本进行预处理,将各个维度的特征归一化到同一个取值区间,并且消除不同特征之间的相关性,才能获得比较理想的结果。虽然神经网络可以通过参数的调整来适应不同特征的取值范围,但是会导致训练效率比较低。归一化的必要性及价值原创 2020-07-23 21:51:56 · 2601 阅读 · 0 评论 -
神经网络之多维卷积的那些事(一维、二维、三维)
文章目录前言一维卷积Conv1d二维卷积Conv2d三维卷积Conv3d卷积中的特征图大小计算方式总结前言一般来说,一维卷积用于文本数据,二维卷积用于图像数据,对宽度和高度都进行卷积,三维卷积用于视频及3D图像处理领域(检测动作及人物行为),对立方体的三个面进行卷积 。二维卷积的用处范围最广,在计算机视觉中广泛应用。一维卷积Conv1d一维卷积最简单,实质是对一个词向量做卷积,如下所示:图中的输入的数据维度为8,过滤器的维度为5。卷积后输出的数据维度为8−5+1=4如果过滤器数量仍为1,输入原创 2020-07-23 18:26:12 · 23186 阅读 · 3 评论 -
深入理解model.eval()与torch.no_grad()
我们用pytorch搭建神经网络经常见到model.eval()与torch.no_grad(),它们有什么区别?是怎么工作的呢?现在就让我们来探究其中的奥秘model.eval()使用model.eval()切换到测试模式,不会更新模型的k,b参数通知dropout层和batchnorm层在train和val中间进行切换在train模式,dropout层会按照设定的参数p设置保留激活单元的概率(保留概率=p,比如keep_prob=0.8),batchnorm层会继续计算数据的mean和va.原创 2020-07-23 14:58:28 · 9950 阅读 · 8 评论 -
PyTorch之torchvision.transforms详解[原理+代码实现]
文章目录前言torchvision.transforms常用变换类transforms.Composetransforms.Normalize(mean, std)transforms.Resize(size)transforms.Scale(size)transforms.CenterCrop(size)transforms.RandomCrop(size)transforms.RandomResizedCrop(size,scale)transforms.RandomHorizontalFliptran原创 2020-07-23 14:33:29 · 23010 阅读 · 5 评论 -
深入理解GAN对抗生成网络
文章目录什么是GAN纳什均衡GAN的学习过程GAN的局限性如何改善GAN的局限性什么是GANGenerative Adversarial Networks,生成式对抗网络,Ian Goodfellow 在2014 年提出的一种生成式模型基本思想来自博弈论的二人零和博弈(纳什均衡), 由一个生成器和一个判别器构成,通过对抗学习来训练生成器的目的是尽量去学习真实的数据分布判别器的目的是尽量正确判别输入数据是来自真实数据还是来自生成器生成器和判别器就是一个矛和盾互相PK的过程为了取得游戏胜利,原创 2020-07-22 12:31:43 · 979 阅读 · 0 评论