激活函数

「自然语言处理(NLP)」一文带你了解激活函数

你说的曾经没有我的故事 提交于 2020-11-23 05:40:58
喜欢我们,点击上方 AINLPer ,关注一下,极品干货即刻送达! 引言 在深度学习网络中,我们经常可以看到对于某一个隐藏层节点的激活值计算一般分为两步,如下图: 第一步,输入该节点的值为 , 时,在进入这个隐藏节点后,会先进行一个线性变换,计算出值 ,上标 1 表示第 1 层隐藏层。 第二步,再进行一个非线性变换,也就是经过非线性激活函数,计算出该节点的输出值(激活值) ,其中 g(z)为非线性函数。 那么问题来了,这个激活函数到底有什么用呢,可不可以不加激活函数呢? 本文概要 1 什么是激活函数? 2 如果没有激活函数会怎样? 3 常见的激活函数 4 参考文献 正文开始 1 什么是激活函数? 激活函数是神经网络中极其重要的概念。 它们决定了某个神经元是否被激活,这个神经元接受到的信息是否是有用的,是否该留下或者是该抛弃。 激活函数的形式如下: 激活函数是我们对输入做的一种非线性的转换。 转换的结果输出,并当作下一个隐藏层的输入。 2 如果没有激活函数会怎样? 1、首先对于y=ax+b 这样的函数,当x的输入很大时,y的输出也是无限大/小的,经过多层网络叠加后,值更加膨胀的没边了,这显然不符合我们的预期,很多情况下我们希望的输出是一个概率。 2、线性变换太简单(只是加权偏移),限制了对复杂任务的处理能力。 没有激活函数的神经网络就是一个线性回归模型。

自动驾驶 | MINet:嵌入式平台上的实时Lidar点云数据分割算法,速度可达 20-80 FPS!

笑着哭i 提交于 2020-11-22 06:44:17
点击上方 “ 小白学视觉 ”,选择加" 星标 "或“ 置顶 ” 重磅干货,第一时间送达 这篇文章是激光雷达点云数据分割算法的嵌入式平台上的部署实现。主要的创新点有两点:一是利用多路分支采用不同分辨率输入后再用不同的卷积块进行处理,达到性能和计算量之间的平衡;二是对基于投影的点云分割方法进行了改进。在嵌入式平台上性能不错,代码将在文章被收录后开源,值得关注。 论文地址 :http://xxx.itp.ac.cn/pdf/2008.09162v1 LiDAR数据的实时语义分割对于自动驾驶车辆至关重要,然而自动驾驶车辆通常配备嵌入式平台并且计算资源有限,这使得点云分割算法的部署具有挑战性。通常的点云分割算法直接在点云上使用复杂的空间聚合操作,这些操作非常昂贵且难以针对嵌入式平台进行优化。因此,它们不适用于带有嵌入式系统的实时场景下应用。作为替代, 基于投影的方法更有效并且可以在嵌入式平台上运行。但是,当前基于投影的最新方法无法实现与基于点的方法相同的精度,并且需要使用数百万个参数。 因此,在本文中, 提出了一种基于投影的方法,称为Multi-scale Interaction Network(MINet) ,该方法有效且准确,具体而言网络使用具有不同尺度的多个通路,并且在不同尺度之间对计算资源进行平衡,同时不同尺度之间的额外密集交互可避免冗余计算,并使网络高效。所提出的网络在准确性

【DL&ML】深度学习调参有哪些技巧?

人走茶凉 提交于 2020-11-17 22:41:11
深度学习调参有哪些技巧? 编辑:Amusi | 来源:知乎 https://www.zhihu.com/question/25097993 目录 一、为什么要学习调参? 二、调参技巧 1. 评价指标: 2. 损失函数: 3. 激活函数选择: 4. 学习率设定: 5. 优化器选择: 6. batch_size 7. 防止过拟合: 8. 残差块与BN层: 9. 数据预处理【对输入】 10.参数随机初始化【对参数】 11.自动调参方法: 12. 过程、结果可视化 13. 关于卷积神经网络的技巧 三、心态类: 深度学习的效果很大程度上取决于参数调节的好坏,那么怎么才能最快最好的调到合适的参数呢?求解 一、为什么要学习调参? 相信很多刚开始接触深度学习朋友,会感觉深度学习调参就像玄学一般,有时候参数调的好,模型会快速收敛,参数没调好,可能迭代几次loss值就直接变成Nan了。 记得刚开始研究深度学习时,做过两个小例子。 一个是用tensorflow构建了一个十分简单的只有一个输入层和一个softmax输出层的Mnist手写识别网络,第一次我对权重矩阵W和偏置b采用的是正态分布初始化,一共迭代了20个epoch,当迭代完第一个epoch时,预测的准确度只有10%左右(和随机猜一样,Mnist是一个十分类问题),当迭代完二十个epoch,精度也仅仅达到了60%的样子

qiuzitao深度学习之PyTorch实战(十六)

生来就可爱ヽ(ⅴ<●) 提交于 2020-11-15 11:39:47
史上最简单、实际、通俗易懂的PyTorch实战系列教程!(新手友好、小白请进、建议收藏) 基于3D卷积的视频分析与动作识别 一、3D卷积原理解读 视频就是一帧一帧的图像按照时间拼接组成的,3D卷积就是比2D的卷积多了个时间维度。 二、UCF 101动作识别数据集简介 UCF 101动作识别数据集官网地址下载: https://www.crcv.ucf.edu/data/UCF101.php 101类视频,每一类里面是一个人在做一类的动作,比如射击、画口红、画眼线等等,数据集有6.5G,我也上传了网盘供大家下载或者大家自己去数据集的官网下载。 UCF101数据集的操作类别为:涂抹眼妆,涂抹口红,射箭,婴儿爬行,平衡木,乐队游行,棒球场,篮球投篮,篮球扣篮,卧推,骑自行车,台球射击,吹干头发,吹蜡烛,体重蹲,保龄球,拳击沙袋,拳击速度袋,蛙泳,刷牙,清洁和挺举,悬崖跳水,板球保龄球,板球射击,在厨房切割,潜水,打鼓,击剑,曲棍球罚款,地板体操,飞盘接球,前爬网,高尔夫挥杆,理发,链球掷,锤击,倒立俯卧撑,倒立行走,头部按摩,跳高,跑马,骑马,呼啦圈,冰舞,标枪掷,杂耍球,跳绳,跳跃杰克,皮划艇,针织,跳远,刺,阅兵,混合击球手,拖地板,修女夹头,双杠,披萨折腾,弹吉他,弹钢琴,弹塔布拉琴,弹小提琴,弹大提琴,弹Daf,弹Dhol,弹长笛,弹奏Sitar,撑竿跳高,鞍马,引体向上,拳打

递归函数与全局变量、局部变量

走远了吗. 提交于 2020-11-14 16:59:07
先看两个简单的程序,看它们的运行结果 程序1 # include <stdio.h> void f ( ) { char x ; scanf ( "%c" , & x ) ; if ( x == '*' ) { printf ( "%c" , x ) ; } else { f ( ) ; printf ( "%c" , x ) ; } return ; } int main ( ) { f ( ) ; return 0 ; } 输入样例 abc* 输出样例 *cba 程序2 # include <stdio.h> char x ; void f ( ) { scanf ( "%c" , & x ) ; if ( x == '*' ) { printf ( "%c" , x ) ; } else { f ( ) ; printf ( "%c" , x ) ; } return ; } int main ( ) { f ( ) ; return 0 ; } 输入样例 abc* 输出样例 **** 由上面两个程序可以看出,它们定义的变量是不一样的,第一个函数的变量x是局部变量,而第二个程序的变量x是全局变量,这就导致了它们的输出结果不一样。 分析程序1 上面是进入函数f( )后的运行过程,刚开始输入x=a,if为假,再次调用f( )函数,再次输入x=b,以此类推下去,到最后if为真时

我是一个平平无奇的AI神经元

筅森魡賤 提交于 2020-11-14 14:59:46
我是一个AI神经元 我是一个AI神经元,刚刚来到这个世界上,一切对我来说都特别新奇。 之所以叫这个名字,是因为我的工作有点像人类身体中的神经元。 人体中的神经元可以传递生物信号,给它输入一个信号,它经过处理后再输出一个信号传递给别的神经元,最终传递到大脑完成对一个信号的决策和处理。 聪明的计算机科学家们受到启发,在代码程序里发明了我: 神经元函数 。 在我们的世界里,我只是普普通通的一员,像我这样的神经元有成百上千,甚至上万个,我们按照 层 的形式,组成了一个庞大的 神经网络 。 很快我和隔壁工位的大白开始混熟了,他比我来得早,对这里要熟悉的多。 听大白告诉我说,我们这个神经网络是一个图像识别的AI程序,只要给我们输入一张狗的照片,我们就能告诉你这是一只柯基,还是泰迪、柴犬、二哈··· 神经元结构 在大白的指引下,我很快就学会了怎么工作。 虽然我们叫神经元,名字听起来挺神秘的,但实际上我就是一个普通函数,有参数,有返回值,普通函数有的我都有: def neuron (a) : w = [...] b = ... ... 我有一个参数 a ,这个参数是一个数组,里面的每一个元素我把它分别叫做a1,a2,a3···用这个a来模拟我这个神经元收到的一组 信号 。 人类的神经元是怎么处理输入的生物信号我不知道,我估计挺复杂的。但在我这里就很简单:我给每一个输入值设定一定的 权重

【深度学习】视觉注意力机制 | 视觉注意力机制用于分类:SENet、CBAM、SKNet

Deadly 提交于 2020-11-08 14:18:17
前面的话 上次文章中,我们主要关注了 视觉应用中的Self-attention机制及其应用——Non-local网络模块 ,从最开始的了解什么是视觉注意力机制到对自注意力机制的细节把握,再到Non-local模块的学习。这次的文章我主要来关注 视觉注意力机制在分类网络中的应用 —— SENet、SKNet、CBAM。 我们通常将软注意力机制中的模型结构分为三大注意力域来分析: 空间域、通道域、混合域 。 (1) 空间域 —— 将图片中的的空间域信息做对应的 空间变换 ,从而能将关键的信息提取出来。对空间进行掩码的生成,进行打分,代表是Spatial Attention Module。 (2) 通道域 ——类似于 给每个通道上的信号都增加一个权重,来代表该 通道与关键信息的相关度 的话,这个权重越大,则表示相关度越高。对通道生成掩码mask,进行打分,代表是senet, Channel Attention Module。 (3) 混合域 —— 空间域的注意力是 忽略了通道域中的信息,将每个通道中的图片特征同等处理, 这种做法会将空间域变换方法局限在原始图片特征提取阶段,应用在神经网络层其他层的 可解释性不强 。 而通道域的注意力是 对一个通道内的信息直接全局平均池化,而忽略每一个通道内的局部信息 ,这种做法其实也是比较暴力的行为。所以结合两种思路,就可以设计出混合域的注意力机制模型。

神经网络原来是这样和数学挂钩的

不想你离开。 提交于 2020-11-07 13:07:38
来源:遇见数学 近几年,有几个被媒体大肆报道的事件,如下表所示。 如上所示,深度学习作为人工智能的一种具有代表性的实现方法,取得了很大的成功。那么,深度学习究竟是什么技术呢?深度学习里的“学习”是怎么做到的呢?本文我们就来解答一下这个疑问,不过在此之前,我们需要先了解一下神经网络,因为深度学习是以神经网络为出发点的。 神经网络的灵感来源 谈到神经网络的想法,我们需要从生物学上的神经元(neuron)开始说起。从生物学扎实的研究成果中,我们可以得到以下关于构成大脑的神经元知识。 人的大脑是由多个神经元互相连接形成网络而构成的。也就是说,一个神经元从其他神经元接收信号,也向其他神经元发出信号。大脑就是根据这个网络上的信号的流动来处理各种各样的信息的。 神经元示意图 神经元主要由细胞体、轴突、树突等构成。树突是从其他神经元接收信号的突起。轴突是向其他神经元发送信号的突起。由树突接收的电信号在细胞体中进行处理之后,通过作为输出装置的轴突,被输送到其他神经元。另外,神经元是借助突触结合而形成网络的。 让我们来更详细地看一下神经元传递信息的结构。如上图所示,神经元是由细胞体、树突、轴突三个主要部分构成的。其他神经元的信号(输入信号)通过树突传递到细胞体(也就是神经元本体)中,细胞体把从其他多个神经元传递进来的输入信号进行合并加工,然后再通过轴突前端的突触传递给别的神经元。 那么

浅谈深度学习混合精度训练

∥☆過路亽.° 提交于 2020-11-05 16:13:21
↑ 点击 蓝字 关注视学算法 作者丨Dreaming.O@知乎 来源丨https://zhuanlan.zhihu.com/p/103685761 编辑丨极市平台 本文主要记录下在学习和实际试用混合精度过程中的一些心得总结和建议。 01. 前言 以前一直看到不少混合精度加速模型训练的工作,受限于手上没有 Volta 架构的GPU。体验工作也就只能作罢。但是最近成功申请下来V100机器,除了激动之外,当时心里最大的想法,就是要尝试下这心心念念已久的混合精度加速功能。 02. 基础理论 在日常中深度学习的系统,一般使用的是单精度 float(Single-Precision)浮点表示。在了解混合精度训练之前,我们需要先对其中的主角半精度『float16』进行一定的理论知识学习。 float vs float16 的组成bitmap 在上图可以看到,与单精度float(32bit,4个字节)相比,半进度float16仅有16bit,2个字节组成。天然的存储空间是float的一半。其中,float16的组成分为了三个部分: 最高位表示符号位; 有5位表示exponent位; 有10位表示fraction位; 根据wikipedia上的介绍,我总结下float16的这几个位置的使用,以及如何从其bitmap计算出表示的数字: 如果 Exponent 位全部为0: 如果 fraction 位

Keras深度学习应用1——基于卷积神经网络(CNN)的人脸识别(上)

僤鯓⒐⒋嵵緔 提交于 2020-10-31 17:41:25
基于CNN的人脸识别(上) 代码下载 一、 CNN概述 1.1 CNN发展历程 1.2 CNN基本结构 二、 CNN算法原理 2.1 CNN基本网络结构 2.1.1输入层 2.1.2卷积层 2.1.3池化层 2.1.4全连接层 2.1.5 激励层 具体代码实现可参看 Keras深度学习应用1——基于卷积神经网络(CNN)的人脸识别(下) 代码下载 Github源码下载地址: https://github.com/Kyrie-leon/CNN-FaceRec-keras 一、 CNN概述 1.1 CNN发展历程 卷积神经网络由生物学自然视觉认知机制启发而来。1962年,诺贝尔奖得主D.H.Hubel和T.N.Wiesel,这两位学者通过对猫脑部皮层中特定的神经元进行研究时,发现了其独特的网络结构。根据这个启发有学者提出了新识别机(recognition)的概念,这也是深度学习中第一个在真正意义上实现的卷积神经网络。自此以后,科学家们开始对CNN进行了深入的研究和改进。 卷积神经网络是属于前馈神经网络下多层神经网络的一种深度机器学习方法,如下图所示,可以看出神经网络的大致分布。 图1-1 神经网络分布图 与传统的图像处理算法相比,CNN的优点为它能够有效避免在前期准备中,需要对图像进行大量的、繁琐的人工提取特征工作。这也说明,CNN能够直接从图像原始像素出发,只需通过一些预处理过程