跟我一起深度学习
文章平均质量分 94
空字符(公众号:月来客栈)
Talk is cheap, show me your code.
展开
-
10031-This post is all you need(①多头注意力机制原理)
1 引言各位朋友大家好,欢迎来到月来客栈。今天要和大家介绍的一篇论文是谷歌2017年所发表的一篇论文,名字叫做”Attention is all you need“[1]。当然,网上已经有了大量的关于这篇论文的解析,不过好菜不怕晚笔者只是在这里谈谈自己对于它的理解以及运用。对于这篇论文,笔者大概会陆续通过7篇文章来进行介绍:①Transformer中多头注意力机制的思想与原理;②Transformer的位置编码与编码解码过程;③Transformer的网络结构与自注意力机制实现;④Transformer的原创 2021-07-07 19:36:14 · 1137 阅读 · 0 评论 -
多标签分类中的损失函数与评估指标
各位朋友大家好,欢迎来到月来客栈。由于公众号推文不支持后续修订, 所以本文将同步推送至网站www.ylkz.life,欢迎大家关注!1 引言在前面的一篇文章[1]中笔者介绍了在单标签分类问题中模型损失的度量方法,即交叉熵损失函数。同时也介绍了多分类任务中常见的评价指标及其实现方法[2]。在接下来的这篇文章中,笔者将会详细介绍在多标签分类任务中两种常见的损失评估方法,以及在多标签分类场景中的模型评价指标。2 方法一将原始输出层的softmax操作替换为simoid操作,然后通过计算输出层与标签之间的s原创 2021-06-30 19:37:08 · 973 阅读 · 0 评论 -
GoogLeNet: Going deeper with convolutions
1 前言各位朋友大家好,欢迎来到月来客栈。在上一篇文章中,笔者花了很大的篇幅介绍完了GoogLeNet中的核心部分Inception模块。其本质上来说就是采用了不同尺度的卷积核对输入进行特征提取,然后再将各个部分得到的结果进行组合,最后在输入到下一层的网络中。只是作者选择了从另外一个相对晦涩的角度来进行切入,解释了Inception结构的目的以及合理性。在接下来的这篇文章中,就让我们来看看GoogLeNet是如何通过Inception堆叠形成的,并且还在ILSVRC2014上大获成功。2 GoogLe原创 2021-01-10 22:47:48 · 481 阅读 · 0 评论 -
Inception: Going deeper with convolutions
1 前言在上一篇文章中笔者介绍了一种网络中的网络NiN模型,在接下来的这篇文章中将向大家介绍另外一种网络模型GoogLeNet[1]。从名字上看它似乎是Google与LeNet的结合,不过实际上它和LeNet并没有什么关系,仅仅是在向它致敬。GoogLeNet是Google公司和Magic Leap公司一起在CVPR2015上所发表的一篇论文,它的目的主要有两个:第一是用来分类,第二就是用来进行目标检测,如图1所示就是图像处理领域中常见的几种任务。GoogLeNet吸收了NiN模型中插入卷积的思想,并在此原创 2020-12-31 08:20:51 · 842 阅读 · 0 评论 -
NIN:Network in Network
1 前言在上一篇文章中笔者介绍了一种可复用的网络模型VGG,在接下来的这篇文章中将向大家介绍另外一种网络模型“Network in Network,NiN(网络中的网络)”。这是一篇是新加坡国立大学2014年发表在顶会ICLR上的一篇论文[1]。笔者在写这篇文章之前其实也没有看过这篇论文,不过当笔者看完这篇论文后发现其动机真的不错,哪怕是放到现在笔者感觉也不会过时。下面就让我们一起来看看这篇论文。公众号后台回复“论文”即可获得下载链接!2 动机笔者一直都认为,决定一篇论文的质量很大程度上会依赖于论文作原创 2020-12-15 11:40:14 · 511 阅读 · 0 评论 -
VGG: Very deep convolutional networks for large-scale image recognition
1 前言经过前面两篇文章的介绍,我们已经了解了LeNet5和AlexNet网络模型。但是总体上来说两者的网络结构几乎并没有太大的差别,仅仅,同时网络的深度以及参数的规模也没有太大的变化。在接下来的这篇文章中,我们将会看到卷积网络中的第三个经典模型VGG。在这篇文章中,作者对卷积网络卷积深度的设计进行了一个探索,并且通过尝试逐步加深网络的深度来提高模型的整体性能。这使得VGG在当年的ILSVRC任务中取得了TOP1的成绩。2 VGG网络VGG网络产生于2014年的Visual Geometry Grou原创 2020-12-02 18:57:36 · 734 阅读 · 0 评论 -
AlexNet: Imagenet classification with deep convolutional neural networks
1 前言在之前的文章中我们多次谈到,如何有效的对输入数据进行特征提取,然后再将提取得到的特征输入到下游的任务模型中是深度学习中的一个重要研究方向。尤其是在图像处理这个领域中,自卷积操作问世以来,如何设计一个有效的卷积神经网络结构就成为了一个热门的研究点。研究者们通过设计不同架构的卷积网络来对输入的图像进行特征提取,都希望设计出的模型能够表现出强大的学习能力,以此来提高下游任务的精度。在上一篇文章中, 笔者介绍了第一个经典的卷积神经网络LeNet5,在接下来的内容中笔者将开始介绍它的继任者AlexNet网原创 2020-11-24 11:37:46 · 617 阅读 · 0 评论 -
卷积池化与LeNet5网络模型
1 前言经过前面三篇文章的介绍,我们已经知道了卷积的原理、卷积的计算过程以及池化的原理和过程等。在接下来的这篇文章中,笔者将开始介绍如何通过Pytorch这一深度学习框架来实现卷积和池化的操作,以及各个API的使用介绍和说明。最后,笔者还会介绍卷积神经网络的入门级网络结构LeNet5,我们也将会通过LeNet5这个网络来完成fashion mnist数据集的分类任务。2 API接口介绍在Pytorch中,对于网络中的一些基本功能函数(例如:卷积、池化、激活函数等)都被放在了torch.nn.funct原创 2020-11-11 08:17:59 · 1527 阅读 · 0 评论 -
Xshell服务器远程连接利器
今天要介绍的一款软件叫做Xshell,它的主要作用呢就方便快捷的连接远程服务器,以及建立一个同服务器进行文件传输的通道。之所以会用到这个软件是因为在后续的学习中,我们基本上都会通过服务器主机来进行代码的运行,因此难免就会与主机之间进行文件的传输等等。因此,在这篇文章中,笔者将首先介绍一下如何与远程主机建立通信;然后再介绍如何使用win10自带的连接工具;然后再介绍Xshell这个工具及其用法。1 SSH上面我们说到了为什么我们需要与远程主机进行连接,那我们应该怎么来进行连接呢?答案就是使用SSH。SSH原创 2020-10-13 08:22:11 · 798 阅读 · 3 评论 -
一站式文本标注工具doccano(你值得拥有)
1 前言今天要介绍的是一款开源的语料标注工具doccano[1]。对于NLP中常见的情感分类、命名体识别、序列到序列等的数据标注任务都可以通过doccano来完成。由于工作的关系,笔者还看到一些厂商的标注工具也是基于doccano开发的。在这个项目的另一个主页中[2],作者也介绍了该项目的四种不同的部署方法,但可能有的地方不是特别详细,因此在安装过程中还是会遇到一些问题。在接下来的这篇文章中,笔者将对其中的Python部署方法进行介绍,对于期间可能遇到的问题也给出了相应的解决方案;同时,笔者也在原项目的原创 2020-09-29 08:24:41 · 5919 阅读 · 7 评论 -
一台没网的主机怎么配置GPU环境?
1 前言什么样的环境配置需要一整天呢?答,在一台内网服务器上且没有内部Python可用源的情况下安装CUDA驱动+Tensorflow需要整整一天。前段时间同事申请的一台主机上周到了,说让笔者来配置一下环境。拿到账号后第一时间登陆上去,并使用了nvidia-smi来查看是否配有显卡。结果提示找不到该命令,初步判断GPU凉了。今天早上同事走过来问我环境弄好了没,速度怎么样?笔者答到,配置好了,速度一般般。同事又问到,和你笔记本比呢?我说差不多,然后补充了一句,没GPU快不起来。结果同事回了一句,主机配了G原创 2020-09-10 22:27:28 · 2553 阅读 · 2 评论 -
我告诉你什么是深度学习
1 引言在之前的文章你告诉我什么是深度学习中,笔者从线性回归中的房价预测、到梯形块儿的面积介绍了输入特征对于模型预测的重要性;接着又从特征提取以及非线性变换的角度介绍了特征提取对于模型的重要性;最后我们从单层神经网络(线性回归模型)顺利的过渡到了多层神经网络,也就是深度学习的概念中。在接下来的这篇文章中,我们再以分类任务为例,再次探索深度学习的理念以及为什么我们需要深度学习。在前面我们也提到过,机器学习与深度学习最大的不同点在于特征的可解释性。在机器学习中,我们会尽可能的要求每个特征(包括不同特征之间组原创 2020-09-08 21:33:17 · 607 阅读 · 0 评论 -
Pytorch之简洁版Softmax多分类
在上一篇文章中,我们自己手动实现了对于softmax操作和交叉熵的计算,可其实这些在Pytorch框架中已经被实现了,我们直接拿来使用即可。但是,为了能够对这些内容有着更深刻的理解,通常我们都会自己手动实现一次,然后在今后的使用中就可以直接拿现成的来用了。在接下来这篇文章中,笔者将首先介绍如何调用Pytorch中的交叉熵损失函数,然后再同时借助nn.Linear()来实现一个简洁版的Softmax回归。1 交叉熵损失函数在前一篇文章中,我们首先分别自己实现了softmax和交叉熵的操作;然后再将两者结合原创 2020-09-01 08:31:58 · 1001 阅读 · 2 评论 -
Pytorch之Softmax多分类任务
在上一篇文章中,笔者介绍了什么是Softmax回归及其原理。因此在接下来的这篇文章中,我们就来开始动手实现一下Softmax回归,并且最后要完成利用Softmax模型对Fashion MINIST进行分类的任务。在开始实现Softmax之前,我们先来了解一下Fashion MINIST这一数据集。1 数据集1.1 FashionMNIST数据集FashionMNIST虽然名字里面有’MNIST’这个词,但是其与手写体识别一点关系也没有,仅仅只是因为FashionMNIST数据集在数据集规模、类别数量和原创 2020-08-25 13:12:50 · 2507 阅读 · 0 评论 -
想明白多分类,必须得谈逻辑回归
1 引例在 《跟我一起机器学》 中,我们已经介绍了什么是逻辑回归回归。但是为了能更好的与深度学习相关内容进行衔接,在本篇文章中我们依旧是首先回顾一下逻辑回归,然后再一步步引入多分类直至过渡到深度神经网络的相关学习中。1.1 从逻辑回归说起我们都知道逻辑回归其实并不是一个回归任务,而是一个彻彻底底的分类任务。之所以当时被称之为回归其原因之一就是逻辑回归在最后预测的时候首先是输出一个[0,1][0,1][0,1]的连续值,然后我们再来人为的指定一个阈值进行分类。也就是,你还可以将逻辑回归先看成是一个回归任原创 2020-08-20 22:08:10 · 1902 阅读 · 0 评论 -
Pytorch之Linear与MSELoss
在前面我们介绍了如何用Pytorch来实现一个两层的神经网络,但是其编码过程略微显得有点复杂。例如我们要手动自己定义权重参数,自己书写如何进行梯度更新等等。但要是某个网络多达几十层,那这个工作量显然是巨大的。因此,将一些常用的操作定义成更高级的API接口也是每个深度学习框架应该包含的东西。下面,在这篇文章中我们就介绍如何用Pytorch来简洁的实现多层全连接网络。1 数据集与网络结构数据集我们还是使用sklearn中的波士顿房价预测数据集,其每个样本包含有13个特征维度。因此我们神经网络的输入层就应该是原创 2020-08-12 22:20:12 · 1056 阅读 · 0 评论 -
这样拟合正弦函数你会吗
为了加深大家对深度学习这一概念的理解,尤其是对深度(多层神经网络) 两个字的认识,笔者在本篇文章中将会通过一个拟合正弦函数例子再次介绍“深度”这一概念。但巧妇难为无米之炊,所以接下来笔者首先会以线性回归的实现为例,来简单介绍一下Pytorch;然后再来实现对正弦函数的拟合。1 动手实现线性回归1.1 深度学习框架在前面介绍《跟我一起深度学习》这个专栏时我们就说到后面会使用Pytorch这个框架来进行相应模型的实现,但并未解释到它是用来干什么的。并且如果是接触过深度学习的同学肯定知道深度学习的相关框架不原创 2020-08-06 20:17:16 · 2301 阅读 · 0 评论 -
你告诉我什么是深度学习
1 引例经过前面在《跟我一起机器学习》中一系列的介绍,我们终于进入到了深度学习。那什么又是深度学习呢?以及我们为什么需要深度学习呢?要想弄清楚这两个问题,我们还得从机器学习的入门 线性回归 说起。如果之前一点没有接触过机器学习,并且也不打算研究机器学习,那么请至少阅读 《跟我一起机器学习》 中前三部分的内容,即线性回归、逻辑回归和模型的改善与泛化。1.1 房价预测在前面介绍线性回归的时候,我们首先举了这么一个例子:假设现在我们现在有一批房屋信息(面积、卧室数量等4个特征)与房价的数据集,现在我们需要用原创 2020-08-04 20:59:19 · 514 阅读 · 0 评论