
深度学习
泛泛之素
君子不器
展开
-
Mxnet (47): 深度分解机(DeepFM)处理广告推荐
现实中的特征交叉数据往往非常复制且非线性,并不仅限于二者的交互,分解机通常用于二阶特征交互,理论上将分解机也可以对更高阶进行建模,但是由于数值不稳定和计算复杂性高通常不使用。为了处理高级的交互关系,一个做法是将分解机和深度神经网络结合,用深度神经网可以应对非线性的情况,本篇介绍一个称为深度分解机器(DeepFM)的代表性模型,该模型将FM和深度神经网络相结合。1. 模型架构DeepFM 有并行的 FM组件以及deep组件组成。 FM和用于二阶特征交互的 2-way 分解机相同。 deep 模块是一个多原创 2020-10-13 17:25:46 · 379 阅读 · 0 评论 -
Mxnet (46): 使用分解机(Factorization Machines)处理广告推荐
互动数据是用户偏好和兴趣的最基本指示。它在以前介绍的模型中起着至关重要的作用。但是,交互数据通常非常稀疏,有时可能会有很多噪点。为了解决此问题,我们可以将辅助信息(例如项的功能,用户的个人资料,甚至是在发生交互的情况下)整合到推荐模型中。利用这些功能有助于做出建议,因为这些功能可以有效地预测用户的兴趣,尤其是在缺少交互数据时。 因此,推荐模型还必须具有处理这些功能并赋予模型一些内容/上下文意识的能力。有针对性的广告服务已经引起了广泛的关注,并且通常被构造为推荐引擎。推荐符合用户个人品味和兴趣的广告对于提高点原创 2020-10-13 15:45:07 · 339 阅读 · 0 评论 -
Mxnet (45): 使用sequence-aware recommender(Caser模型)进行电影推荐
前面的几种推荐系统都是通过将任务抽象为矩阵完成,并没有考虑到用户的短期行为,人类的喜好是会随着生活学习经历而改变的,往往短期内的反馈最能代表一个人的兴趣。本篇介绍一种考虑用户交互顺序的推荐模型:序列感知推荐(sequence-aware recommender),它的输入是用户带有时间戳的交互列表。这里介绍的序列感知模型 Caser是 卷积序列嵌入推荐模型(convolutional sequence embedding recommendation model)的缩写,采用卷积神经网络捕获用户最近活动的原创 2020-10-13 11:46:43 · 1552 阅读 · 0 评论 -
Mxnet (44): 使用神经协作过滤(NeuMF模型)进行个性化排名
1.个性化排名前面对电影数据集的处理只考虑了明确的反馈,通过观察到的等级进行了训练和测试。这种方法有两个缺点:在实际应用中,大多数的反馈都是隐式的,显式的反馈往往需要更高的收集成本。未被观察的哪些用户-项目交互可能用于预测用户的喜好但是被忽略了,当这些缺失不是随机导致的而是由于用户的喜好导致的这些方法将不在适用。很显然,未观测的这些用户-项目对是用户真实的负反馈(用户对这些不感兴趣才没看)和缺失值(正常随机的缺失,跟喜好无关,将来有可能会看)的结合体。如果简单的忽略其实是不对的。为了解决这个问题原创 2020-10-12 19:32:50 · 1427 阅读 · 0 评论 -
Mxnet (43): 使用基于自编码器的AutoRec模型完成推荐系统
尽管矩阵分解模型在评级预测任务上实现了不错的性能,但它本质上是线性模型。因此,此类模型无法捕获可能预示用户偏好的复杂非线性和复杂关系。在本节中,我们介绍了非线性神经网络协同过滤模型AutoRec。它使用自动编码器架构识别协作过滤(CF),并旨在基于显式反馈将非线性变换集成到CF中。神经网络已被证明能够逼近任何连续函数,使其适合于解决矩阵分解的局限性并丰富矩阵分解的表达能力:AutoRec具有与自动编码器相同的结构,自动编码器由输入层,隐藏层和重构(输出)层组成。自动编码器是一种神经网络,可以学习将其输入原创 2020-10-12 14:18:13 · 710 阅读 · 0 评论 -
Mxnet (42): 推荐系统之矩阵分解
之前有写过推荐的相关博客,通过皮尔森相关性、knn、以及矩阵分解进行处理,当时使用的矩阵分解为sklearn的集成方法,这里1. 矩阵分解矩阵分解是推荐系统公认的算法。矩阵分解是一种协同过滤模型。协同过滤从广义上讲,它是使用涉及多个用户、代理和数据源之间协作的技术对信息或模式进行过滤的过程。详细的说,矩阵分解模型通过将用户-项目交互的矩阵(例如,评级矩阵)分解为两个相较低等级的矩阵的乘机,从而获取用户-项目交互的低等级结构。用 R∈Rm×n\mathbf{R} \in \mathbb{R}^{m \原创 2020-10-12 13:41:23 · 741 阅读 · 0 评论 -
Mxnet (41): 自然语言推理:fine-tuning BERT
对于自然语言处理,可以设计很多模型,可以基于RNN、CNN、MLP甚至注意力机制。当在特定的环境下这写模型有用,但是并不通用,为每一个自然语言处理任务单独设计模型成本太高,之前有提到BERT模型,可以通过预训练BERT模型,然后针对不同类型的自然语言任务进行fine-tuning处理之后可以适配各种类型的nlp任务。1.fine-tuning BERT1.1 单一文字分类单个文本分类以单个文本序列作为输入并输出其分类结果。除了我们在本章中研究的情感分析之外,语言可接受性语料库(CoLA)也可用于单个文原创 2020-10-12 10:39:49 · 727 阅读 · 0 评论 -
Mxnet (40): 注意力机制自然语言推理(SNLI)数据集
自然语言推理是通过已知的前提文本来确定能否推断目的文本。也就是说,自然语言推理用于确定一对文本序列之间的关系:蕴含: 可以通过前提推断出假设。矛盾: 可以推断出与假设相反。中立: 所有其他情况。自然语言推理也可以理解为识别文本的蕴含的任务。For example, 下面一对文本可以使用 蕴含物 进行标注因为 假设中的"显示出喜欢"可以通过前提中的 "相互拥抱"中推断出来。前提: 两个女人互相拥抱。假设: 两个女人显示出喜欢。下面是一个展示矛盾的例子,“运行编码示例”表示“没有睡觉原创 2020-10-11 14:55:47 · 4555 阅读 · 1 评论 -
Mxnet (39): 上下文敏感的nlp模型:BERT
word2vec和GloVe之类的词嵌入模型是与上下文无关。他们将相同的预训练向量分配给相同的单词,而不管该单词的上下文(如果有)。他们很难用自然语言处理好多义性或复杂的语义。这种上下文无关的很有局限性,因此出现了很多上下文敏感的模型,ELMo为其中之一。ELMo将来自预训练的双向LSTM的所有中间层表示形式组合为输出表示形式,然后ELMo表示将作为附加功能添加到下游任务的现有模型中。虽然这解决了上下文无感的问题,但是解决的方案取决与特定的任务体系。但是,为每个自然语言任务设计特定的体系比价困难。为此GP原创 2020-10-10 15:56:42 · 1686 阅读 · 0 评论 -
Mxnet (38): 同类词和类比
1. 全局矢量词嵌入(GloVe)使用常规的交叉熵损失函数有时会有一些问题:让模型预测的成本qijq_{ij}qij 成为合理的概率分布需要将字典中所有项目作为分母,这样会导致过多的开销。字典中经常会会有不常见的单词,这些单词很少出现在数据集中,在交叉熵损失函数中,对大量不常见单词的条件概率分布的最终预测可能不准确GloVe为了解决上述问题而产生,相较于word2dev模型,它使用平方损失,并基于Skip-Gram模型做了如下三点改进:使用非概率分布变量 pij′=xijp'_{ij}=x原创 2020-10-10 11:56:07 · 355 阅读 · 1 评论 -
Mxnet (37): word2vec 预训练
1. 预训练根据batch_size为512,最大移动窗口为5,噪声词数量为5,获取数据。from d2l import mxnet as d2lfrom mxnet import np, npx, gluon, init, autogradfrom mxnet.gluon import nnimport pandas as pdimport os import mathimport randomfrom plotly import express as pxnpx.set_np()b原创 2020-10-06 14:11:05 · 518 阅读 · 0 评论 -
Mxnet (36): 词嵌入 (word2vec)
在自然语言系统值,单词是基本单位,词向量是用于表示单词的特征向量。将单词映射到实数向量的技术称为单词嵌入。用于表示单词之前使用过one-hot作为处理,但是one-hot有一个缺点就是无法用于体现单词之间的关系。通常使用两个词向量的余弦距离来表示其相似度,使用one-hot表示的词向量之间的预先相似度都为0,故无法表示相似程度。可以使用Word2vec来解决这个问题。它使用固定长度的向量来表示每一个单词,并且这些向量之间可以更好的表示相似性。Word2vec工具包含两个模型:跳过语法连续词袋(CBOW原创 2020-10-05 20:21:49 · 451 阅读 · 0 评论 -
Mxnet (35): 使用全卷积网络(FCN)进行语义分割
1. 转置卷积装置卷积层用来增加输入的宽和高。让我们考虑一个基本情况,输入和输出通道均为1,填充为0,跨度为1。下图说明了转置卷积如何通过2×22×22×2内核是根据2×22×22×2输入矩阵得到3x33x33x3的输出将上面的过程转化为代码如下,其中kernel为K,输入为X:def trans_conv(X, K): h, w = K.shape Y = np.zeros((X.shape[0] + h - 1, X.shape[1] + w - 1)) for i i原创 2020-10-04 18:39:43 · 647 阅读 · 0 评论 -
Mxnet (34): 语义分割数据集处理
前面的对象检测中,我们使用矩形边框标记和预测图像中的对象。这里将使用语义分割,通过将图像分割成具有不同语义类别的区域。这些语义区域在像素级别标记和预测对象。对象检测相比,语义分割使用像素级边界标记区域,从而显着提高了精度。1. 图像分割与实例分割在计算机视觉领域, 语义分割有两种重要的方法: 图像分割和实例分割。 我们需要将如下概念与语义分割作以区分:图像分割将图像分为几个组成部分。这个方法通常使用图像之间的相关性。在训练期间,图像像素不需要标签。然而在预测时,这个模式不能确保分割的区域具有我们想原创 2020-10-04 15:56:58 · 1985 阅读 · 0 评论 -
Mxnet (33): 多盒目标检测(SSD)检测香蕉
1. 香蕉检测数据集对象检测没有像MNIST或Fashion-MNIST这样的小型数据集。为了快速测试模型,可以自己组装数据集。首先使用香蕉生成1000个角度和大小不同的香蕉图像。然后收集一些背景图片,并将香蕉图像放置在每个图像的随机位置。制作好的香蕉检测数据集可以在网上下载。from d2l import mxnet as d2lfrom mxnet import gluon, image, np, npx, autograd, initfrom mxnet.gluon import nnfro原创 2020-10-03 21:19:33 · 1750 阅读 · 3 评论 -
Mxnet (32): 迁移学习(Fine-Tuning)进行热狗识别
总所周知,对于训练模型,一定是数据量越大准去率越高,同时越难以过拟合,泛化能力更强。一些模型训练的数据太少,当应用的时候输入的数据范围又太大,导致最终训练的模型的准确性可能无法满足实际需求。为了解决上面的问题,一个方法就是获取更多的数据,但是获取数据是一个比较浪费金钱以及时间的事情。另一个方法就是通过迁移学习,将学习到的知识从源数据集迁移到目标数据集。比如,ImageNet中的图像大部分与椅子无关,但是在此数据集上训练的模型可以提取更通用的图像特征,这些特征可以帮助识别边缘,纹理,形状以及对象组成。这些特原创 2020-10-03 14:45:27 · 1056 阅读 · 2 评论 -
Mxnet (31): 使用图像增强训练CIFAR-10数据集
图像增强技术通过对训练图像进行一系列随机更改以生成相似但不同的训练示例来扩展训练数据集的规模。并且随机更改一些示例可以有效的减小模型对某些属性的依赖,提高模型的泛化能力:通过不同的方式裁剪图像,可以使刚兴趣的对象出现在不同位置,减小模型对位置的依赖通过对图片颜色的调节,降低模型对颜色的敏感度。from d2l import mxnet as d2lfrom mxnet import autograd, init, np, npx, gluon, imagefrom mxnet.gluon im原创 2020-10-03 12:33:07 · 1601 阅读 · 0 评论 -
Mxnet (30): RMSProp、AdaDelta、Adam算法
1. RMSProp算法RMSProp跟Adagrad一样作为将速率计划与坐标自适应学习速率分离的简单解决方案。 Adagrad累积梯度的平方 gt\mathbf{g}_tgt 到state向量 st=st−1+gt2\mathbf{s}_t = \mathbf{s}_{t-1} + \mathbf{g}_t^2st=st−1+gt2。 由于 st\mathbf{s}_tst缺少正则化会跟随算法的收敛呈线性增长。RMSProp算法将这些梯度按元素平方做指数加权移动平均:st←γst−1+(1−原创 2020-10-02 15:09:34 · 477 阅读 · 0 评论 -
Mxnet (29): AdaGrad算法
1. 稀疏特征和学习率在模型训练中会有稀疏特征(很少发生的特征),在自然语言模型中常见,比如,与 “学习”相比“预处理”更加少见。同时在其他领域也会用到,例如计算广告和个性化的协同过滤。因为只有少数人感兴趣的事情很多。长尾经济很受用。在学习率下降的情况下,我们可能最终会遇到以下情况:常见特征的参数收敛到其最佳值相当快,而对于罕见特征,在确定最佳值之前,我们仍然缺乏足够频繁地观察它们的情况。换句话说,对于频繁使用的功能,学习率降低得太慢,对于不频繁使用的功能,学习率降低得太快。解决此问题的一种可行方法是原创 2020-10-02 13:52:04 · 460 阅读 · 0 评论 -
Mxnet (28): 动量(Momentum)
执行随机梯度下降时,面对噪声时选择学习速率需要格外注意。如果学习速率下降的太快,就会过早停止,如果下降的太慢,就会导致无法得到足够的收敛,以至于噪音使我们不但远离最有解。1. 收敛与发散问题通过一个例子说明问题:f(x)=0.1x12+2x22.f(\mathbf{x}) = 0.1 x_1^2 + 2 x_2^2.f(x)=0.1x12+2x22.from d2l import mxnet as d2lfrom mxnet import np, npx, autograd, init, gl原创 2020-10-02 12:49:20 · 375 阅读 · 0 评论 -
Mxnet (27): 小批量随机梯度下降(Minibatch-SGD)
目前为止,梯度学习的方法中有两个极端: 一次使用所有的数据计算梯度和更新参数;一次计算一次梯度。1 向量化和缓存决定使用小批量的主要原因是计算效率。当考虑并行化到多个GPU和多个服务器时很好解释。我们需要向每一个GPU至少发送一个图像,假设每个服务器8个GPU一共16个服务器,那么我们的最小批次已经达到了128。在单个GPU甚至CPU来看,情况更加微妙。设备的内存类型千奇百怪,用于计算的单元也不尽相同,而且服务器之间的带宽限制也是不同的。例如,CPU的寄存器数量比较少,之后是L1,L2高速缓存,某些情原创 2020-10-02 11:26:56 · 815 阅读 · 0 评论 -
Mxnet (26): 梯度下降(GD&SGD)
这里我们介绍梯度下降的基本概念。尽管很少实际中很少用到,但是了解梯度下降有益于理解随机梯度下降算法的关键。例如,由于学习率过高,优化问题可能会有所不同,这在梯度下降中也会出现。同样预处理是梯度下降中的常用技术。我们先从简单的入手。1 一维梯度下降一维梯度下降是一个很好的例子,可以用于理解梯度下降算法如何减小目标函数的值。对于连续可微的实值函数f:R→Rf: \mathbb{R} \rightarrow \mathbb{R}f:R→R。使用泰勒展开公式:f(x+ϵ)=f(x)+ϵf′(x)+O(ϵ2)原创 2020-10-01 19:00:15 · 350 阅读 · 0 评论 -
Mxnet (25): 优化算法
对于深度学习问题,通常是先定义损失函数,获得损失之后在通过优化函数尽量减小损失,大多数的优化算法都是涉及最小化。要最大化也很简单只需要在目标上取反即可。1 优化和估算优化和深度学习本质上目标是不同的。优化的目的是最小化损失,而深度学习是根据提供的数据找到最佳模型。训练误差和泛化误差通常是不同的:优化算法的目标是损失函数,因此其优化的目的是减少训练误差。而深度学习的目的是减少泛化误差。为了实现后者除了优化函数还需要注意过拟合问题。from d2l import mxnet as d2lfrom mxn原创 2020-10-01 14:53:10 · 463 阅读 · 0 评论 -
Mxnet (24): 机器翻译(seq2seq)
1. 机器翻译和数据集目前为止,我们已经知晓如何将循环神经网络应用于语言模型:在给定之前token的情况下预测下一个token。现在学习一种新的应用模式,机器翻译,它的输出不再是一个token而是一个token列表。机器翻译(MT)是指将一段文本从一种语言翻译为另一种语言。用神经网络解决这个问题通常称为神经机器翻译(NMT)。与语料库仅包含一种语言的语言模型相比,机器翻译的数据集至少含有两种语言,即源语言和目标语言。 将源语言的每一个句子对应翻译成目标语言。因此,机器翻译的数据预处理和语言模型的处理方式原创 2020-09-30 17:45:39 · 937 阅读 · 0 评论 -
Mxnet (23): 双向循环神经网络(Bi-RNN)
到目前为止,我们假定我们的目标是给定到目前为止所看到的内容,例如在时间序列的上下文中或在语言模型的上下文中,对下一个单词进行建模。但是会有填写空白的情况:I am _____I am _____ very hungry.I am _____ very hungry, I could eat half a pig.根据可用的信息量,我们可能用非常不同的词(例如“高兴”,“不满意”和“非常”)来填充空白。显然,短语的结尾传达了有关选择哪个单词的重要信息。无法利用此功能的序列模型将无法在相关任务上执行原创 2020-09-29 19:12:55 · 1064 阅读 · 4 评论 -
Mxnet (22): 长短期记忆(LSTM)
LSTM模型是解决隐藏变量模型信息保存和输入跳过的最早的方法之一。它具有门控循环单元(GRU)的许多属性,但是LSTM的设计要比GRU的稍微复杂一些。它是受到计算机的逻辑门的启发,为了控制存储单元,需要多个门。输出门:从单元中读出条目输入门:决定何时将数据读取到单元中遗忘门:用来重置单元内容这种设计也是为了需要时记住状态和不需要时忽略输入。1. 长短期记忆上面也介绍了LSTM中使用了三个门:输入门,输出门以及遗忘门。还有类似RNN中隐藏状态的变体用作存储单位(cell),记录其他信息1.1原创 2020-09-29 18:01:30 · 665 阅读 · 0 评论 -
Mxnet (21): 门控循环单元(GRU)
梯度爆炸通过裁剪梯度进行控制,但是矩阵的长乘积会导致梯度消失或发散。梯度消失在实践中的含义:我们可能会遇到这样的情况,早期观察对于预测所有将来的观察非常重要。第一token的影响至关重要,希望通过一些机制可以讲重要的早期信息存储在存储单元中。如果没有这种机制的话,一直传递下去会分配非常大的梯度。可能会遇到某些符号没有观察结果的情况。例如在解析网页的时候,可能会存在用于评估页面上传达的情感无关的HTML代码,我们希望有一些机制可以跳过这些无关的符号。可能会遇到序列各个部分之间存在逻辑中断的情况。例如,原创 2020-09-29 12:19:57 · 874 阅读 · 0 评论 -
Mxnet (20): 循环神经网络(RNN)下
4. 循环神经网络循环神经网络,通过潜在自回归模型,使用隐藏状态来存储之前的信息。隐藏层和隐藏状态是指两个非常不同的概念。如所解释的,隐藏层是在从输入到输出的路径上从视图中隐藏的层。从技术上讲,隐藏状态是在给定步骤中我们所做的任何事情的输入,并且只能通过查看先前时间步骤中的数据来计算它们。递归神经网络(RNN)是具有隐藏状态的神经网络。4.1 不含隐藏状态的神经网络之前使用MLP就是不含隐藏状态的神经网络,可以随机选择特征标签对,并通过自动区分和随机梯度下降来学习网络参数。4.2 具有隐藏状态的循环原创 2020-09-28 20:00:11 · 984 阅读 · 0 评论 -
Mxnet (19): 循环神经网络(RNN)上
在生活中经常能够遇见序列数据,有些是根据时间更改,例如天气,股票,经济指数等,有些是有上下文关联的,如音乐、文章。为了更好的处理这些数据,从业工作者设计出了循环神经网络。它通过引入状态变量来存储过去的信息,并通过其与输入共同决定当前输出,咋感觉有点像残差块。循环神经网络常用于处理序列数据,如一段文字或声音、购物或观影的顺序,甚至是图像中的一行或一列像素。因此,循环神经网络有这广泛的实际应用,如语音模型、文本分类、机器翻译、语音识别、图像分析、手写识别和推荐系统。许多循环网络的示例都是基于文本数据。主要介原创 2020-09-28 16:30:08 · 528 阅读 · 0 评论 -
Mxnet (18): 密集连接的网络(DenseNet)
ResNet极大地改变了有关如何参数化深度网络功能的观点。DenseNet(密集卷积网络)在某种程度上是对此的逻辑扩展,它与ResNet的主要区别见下图:ResNet是相加DenseNet是连结x→[x,f1(x),f2([x,f1(x)]),f3([x,f1(x),f2([x,f1(x)])]),…]x→[x,f_1(x),f_2([x,f_1(x)]),f_3([x,f_1(x),f_2([x,f_1(x)])]),…]x→[x,f1(x),f2([x,f1(x)]),f3([x,f原创 2020-09-27 16:17:03 · 2894 阅读 · 0 评论 -
Mxnet (17): 残差网络(ResNet)
理论上添加新的层会导致误差降低,但是实践中,添加过多的层后训练误差往往不降反升。即使利用批量归一化带来的数值稳定性使训练深层模型更加容易,该问题仍然存在。针对这一问题,何恺明等人提出了残差网络(ResNet)1 残差块结合下图理解残差,输入为 x ,假设我们希望学出的理想映射为 f(x) 。左侧, 虚线框中的部分必须直接学习映射f(x)f(x)f(x) 。右侧, 虚线框中的部分则需要拟合出有关恒等映射的残差映射f(x)−xf(x)−xf(x)−x。我们只需将图中右图虚线框内上方的加权运算(如原创 2020-09-27 15:25:20 · 962 阅读 · 0 评论 -
Mxnet (16): 并行网络(GoogLeNet)
GoogLeNet吸收了NiN中网络串联网络的思想,并在此基础上做了很大改进。以前的网络中对kernel_size的选取1~11都有,GoogLeNet的见解是多种大小的内核一起使用可能会有利,有点选举的赶脚1.Inception 块GoogLeNet中的基础卷积块叫作Inception块,得名于同名电影《盗梦空间》(Inception)。与NiN块相比,这个基础块在结构上更加复杂其实由四个并行路线组成:1×1 卷积3×3 卷积 + 1×1 卷积5×5 卷积 + 1×1 卷积3×3 最大池原创 2020-09-27 14:59:21 · 1508 阅读 · 0 评论 -
Mxnet (15): 网络中的网络(NiN)
1. 网络中的网络(NiN)LeNet、AlexNet和VGG在设计上的共同之处是就是都是先通过卷积提取特征,然后通过全链接层进行分类。NiN使用了另外一种思路,将简单的卷积和全链接结构协程Block,然后将这些block串联形成网络。1.1 NiN块卷积层的输入和输出通常是四维数组(样本,通道,高,宽),而全连接层的输入和输出则通常是二维数组(样本,特征)。如果想在全连接层后再接上卷积层,则需要将全连接层的输出变换为四维。这里通过1×11×11×1卷积层作为全链接层,每一个1×11×11×1相当于一原创 2020-09-27 14:55:00 · 429 阅读 · 0 评论 -
Mxnet (14): 神经网批量归一化
1. 批量归一化训练深度神经网络很困难,存在一些挑战,需要引入批量归一化来处理这些这些挑战:数据预处理通常会对结果有巨大的影响,通常需要将我们的数据进行特征标准化,让特征平均值为0,方差为1。.在CNN模型中,中间层的变量可能会采用变化很大的值,可能会阻碍网络的收敛,如果一层的变量值是另一层的100倍,那么需要对学习率进行调整。更深的网络更复杂,很容易过拟合,因此正则化显得更加关键在模型训练时,批量归一化利用小批量上的均值和标准差,不断调整神经网络中间输出,从而使整个神经网络在各层的中间输出的原创 2020-09-26 20:37:28 · 569 阅读 · 0 评论 -
Mxnet (13): 重复元素神经网络(VGG)
1. 使用重复元素的网络(VGG)AlexNet在LeNet的基础上增加了3个卷积层。但AlexNet作者对它们的卷积窗口、输出通道数和构造顺序均做了大量的调整。但并没有提供简单的规则以指导后来的研究者如何设计新的网络。VGG提出了可以通过重复使用简单的基础块来构建深度模型的思路。1.1 VGG块经典CNN的基本构建块是以下序列:具有填充以保持分辨率的卷积层通过ReLU的获取非线性max pooling层的合并层。个VGG块由一系列卷积层组成,然后是用于空间下采样的最大池化层。作者将卷积原创 2020-09-26 14:48:05 · 408 阅读 · 0 评论 -
Mxnet (12): 深度卷积神经网络(AlexNet)
1. 深度卷积神经网络(AlexNet)尽管在引入LeNet之后,CNN在计算机视觉和机器学习社区中广为人知,但它们并没有立即占据主导地位。尽管LeNet在早期的小型数据集上取得了良好的结果,但尚未确定在更大,更现实的数据集上训练CNN的性能和可行性。实际上,在1990年代初期到2012年的分水岭结果之间的大部分时间里,神经网络通常被其他机器学习方法所超越,例如支持向量机。当初神经网络没有达到现在的水平,原因有很多:计算能力不足,没有现在显卡如此普及,很难处理多层CNN。数据集相对较小。没有初始原创 2020-09-26 11:30:57 · 380 阅读 · 0 评论 -
Mxnet (11): 卷积神经网(CNN)
1. 卷积神经网卷积神经网络(CNN),专门为了处理图片而设计的神经网络。基于CNN的体系结构现在在计算机视觉领域无处不在,并且已经变得如此占主导地位,以至于今天几乎所有开发出商业应用程序或参加与图像识别,对象检测或语义分割有关的应用都会用到。CNN除了准确率高,CNN往往在计算效率上也高,这不仅是因为它们所需的参数比完全连接的架构少,而且卷积易于在GPU内核之间并行化。因此从业人员在可能情况下都会使用CNN,甚至在处理一些一维结构的任务(音频,文本和事件序列分析),CNN的一些巧妙改编也使它们适用于图原创 2020-09-25 21:24:44 · 979 阅读 · 0 评论 -
Mxnet (10): 深度学习神经网络构造
1.构造net1.1 构造BlockBlock类是nn模块里提供的一个模型构造类,简单概括Block的基本功能:接收输入数据作为其前向传播函数的参数。通过使前向传播函数返回一个值来生成输出。请注意,输出的形状可能与输入的形状不同。计算其输出相对于其输入的梯度,可以通过其反向传播函数进行访问。通常,这是自动发生的。存储并提供对执行前向传播计算所需的那些参数。根据需要初始化模型参数。我们可以继承它来定义我们想要的模型:通过重写Block类的__init__方法,构造模型结构通过重写Bl原创 2020-09-25 11:32:59 · 997 阅读 · 0 评论 -
搞机:搭建使用gpu进行深度学习的docker镜像
由于重装系统等原因,每次重装以后,想要搞pytorch这些都要重现安装cuda,cudnn这个怪麻烦的,于是就搞一个docker镜像,可以简化这个过程,并且结合jupyter notebook,使用上也不会过于麻烦,安装上常用miniconda和常用库,以及最近使用的mxnet和pytorch,gpu版本,而且docker19.03 在docker里面想读取nvidia显卡再也不需要额外的安装nvidia-docker。技术栈:docker19.03cuda10.2cudnn8jupyterm原创 2020-09-24 22:02:51 · 4935 阅读 · 0 评论 -
Mxnet (9):kaggle实战:房价预测
1.处理数据import osimport requestsimport zipfileimport tarfileimport hashlibfrom d2l import mxnet as d2lfrom mxnet import gluon, autograd, init, np, npxfrom mxnet.gluon import nnimport pandas as pdnpx.set_np()1.1 获取数据可以在kaggle官网下载:https://www.kagg原创 2020-09-24 13:45:07 · 352 阅读 · 0 评论