relu

激活函数sigmoid 、tanh、Relu、Leaky Relu 优缺点对比

穿精又带淫゛_ 提交于 2020-02-26 02:05:28
同学你好,这是个很好的问题,flare老师在第8章卷积神经网络的章节也有提及“为什么CNN结构使用relu替代sigmoid作为激活函数”。flare老师和大家分享常用激活函数的优缺点: sigmoid: 很直观的反映了二分类任务的事件可能性(概率),通过引入双边极值稳定的非线性函数关系能有效地模拟神经元信息机制,在逻辑回归与神经网络中被广泛使用。 缺陷:双边区域数值饱和(x很大或很小)导致随着x变化带来的y变化很小,导数趋于零,容易造成模型求解梯度消失问题。当我们建立一个复杂的神经网络,比如用于机器视觉的卷积神经网络,多层信息传递后,对模型进行反传导的梯度求解会存在梯度消失的情况,导致无法找到最优解。 tanh:和sigmoid挺像的,也是双边极值稳定的非线性函数关系,而且因为正负方向以原点对称,输出均值是0(与很多样本的分布均值接近),使得其收敛速度要比sigmoid快,减少迭代次数。也存在梯度消失问题。 relu:全称是Rectified Linear Units,是一种后来才出现的激活函数。 可以看到,当x<0时,ReLU饱和,而当x>0时,则不存在饱和问题。所以,ReLU 能够在x>0时保持梯度不衰减,从而缓解梯度消失问题。相比于纯线性的激活函数,relu函数存在梯度不相同的两个区域,从而能实现非线性关系的拟合。 然而,随着训练的推进,部分输入会落入硬饱和区

CNN目标检测系列算法发展脉络——学习笔记(一):AlexNet

半腔热情 提交于 2020-02-25 19:27:33
   在咨询了老师的建议后,最近开始着手深入的学习一下目标检测算法,结合这两天所查到的资料和个人的理解,准备大致将CNN目标检测的发展脉络理一理(暂时只讲CNN系列部分,YOLO和SSD,后面会抽空整理)。   目标检测的发展大致起始于2000年前后(具体我也没去深究,如果有误还请大佬们指正 ●ˇ∀ˇ● ),早期受限于算力,目标检测发展的不温不火,直到半导体技术的进步,以及Hinton团队的榜样作用,图像的目标检测才开始有了突飞猛进的发展。   就我个人理解,从2012年至今的目标检测的发展,并没有在算法上呈现出本质性的突破,更多的是将前人已经提出的算法/技巧,进行了巧妙的组合与优化,然后在高速设备上进行快速的验证与迭代,才有了目标检测如今繁荣的发展现状。(当然,也可能是因为小弟对学术界的发展所知甚少,而导致了一种以偏概全的理解🙃emm。。。)   接下来的几篇博客会按照 AlexNet --> R-CNN -->FastRCNN -->FasterRCNN --> MaskRCNN 的顺序来整理,今天的内容是ALexNet,因为我的目的在于简析目标检测发展脉络,把握算法的改进路线,所以不会特别详细的讲解算法原理(好吧,我就是懒的写怎么滴~( ̄▽ ̄)~*),只挑与“改进/发展”相关的部分内容简析,以作为我对目标检测领域的综述性学习笔记。 AlexNet    说起AlexNet

deep learning 经典网络模型之Alexnet、VGG、Googlenet、Resnet

爷,独闯天下 提交于 2020-02-25 19:01:29
CNN的发展史 上一篇回顾讲的是2006年Hinton他们的Science Paper,当时提到,2006年虽然Deep Learning的概念被提出来了,但是学术界的大家还是表示不服。当时有流传的段子是Hinton的学生在台上讲paper时,台下的机器学习大牛们不屑一顾,质问你们的东西有理论推导吗?有数学基础吗?搞得过SVM之类吗?回头来看,就算是真的,大牛们也确实不算无理取闹,是骡子是马拉出来遛遛,不要光提个概念。 时间终于到了2012年,Hinton的学生Alex Krizhevsky在寝室用GPU死磕了一个Deep Learning模型,一举摘下了视觉领域竞赛ILSVRC 2012的桂冠,在百万量级的ImageNet数据集合上,效果大幅度超过传统的方法,从传统的70%多提升到80%多。个人觉得,当时最符合Hinton他们心境的歌非《我不做大哥好多年》莫属。 这个Deep Learning模型就是后来大名鼎鼎的AlexNet模型。这从天而降的AlexNet为何能耐如此之大?有三个很重要的原因: 大量数据,Deep Learning领域应该感谢李飞飞团队搞出来如此大的标注数据集合ImageNet; GPU,这种高度并行的计算神器确实助了洪荒之力,没有神器在手,Alex估计不敢搞太复杂的模型; 算法的改进,包括网络变深、数据增强、ReLU、Dropout等,这个后面后详细介绍。

从零开始的彩笔深度学习成长之路(day1)---这个po主明明很菜却过分咸鱼

a 夏天 提交于 2020-02-23 01:39:52
又是咸鱼无所事事的一天 11点半起床,打开电脑,CSGO启动!!!!!!!!!!! 游戏失败,关闭游戏,气急败坏,无所事事again 不如…学习一下深度学习? pip install tensorflow spyder启动!!!!!!! 打开 tensorflow官方教程 ,开始抄代码! day1 没有目标,能给和我画出美美的图出来装逼即可。 import tensorflow as tf from tensorflow import keras ''' 将kersa作为一个单独的 ''' import numpy as np import matplotlib . pyplot as plt fashion_mnist = keras . datasets . fashion_mnist ( train_images , train_labels ) , ( test_images , test_labels ) = fashion_mnist . load_data ( ) 上面这波呢,这波是肉蛋葱鸡,哦不不不,是导入数据,keras自带有一个叫做fashion_mnist的图像集合,python赋值命令都是用逗号隔开的,至于为什么分为两个(),()我也不叽到 接下来先考察一下收到的数据,然后进行下一步的算法 不难发现,收到的图片共1w个,每一个的格式都是28*28 不难发现

DataWhale组队打卡学习营task05-3 卷积神经网络进阶

谁说我不能喝 提交于 2020-02-20 06:35:54
深度卷积神经网络(AlexNet) LeNet: 在大的真实数据集上的表现并不尽如⼈意。 1.神经网络计算复杂。 2.还没有⼤量深⼊研究参数初始化和⾮凸优化算法等诸多领域。 机器学习的特征提取:手工定义的特征提取函数 神经网络的特征提取:通过学习得到数据的多级表征,并逐级表⽰越来越抽象的概念或模式。 神经网络发展的限制:数据、硬件 AlexNet 首次证明了学习到的特征可以超越⼿⼯设计的特征,从而⼀举打破计算机视觉研究的前状。 特征: 8层变换,其中有5层卷积和2层全连接隐藏层,以及1个全连接输出层。 将sigmoid激活函数改成了更加简单的ReLU激活函数。 用Dropout来控制全连接层的模型复杂度。 引入数据增强,如翻转、裁剪和颜色变化,从而进一步扩大数据集来缓解过拟合。 #目前GPU算力资源预计17日上线,在此之前本代码只能使用CPU运行。 #考虑到本代码中的模型过大,CPU训练较慢, #我们还将代码上传了一份到 https://www.kaggle.com/boyuai/boyu-d2l-modernconvolutionalnetwork #如希望提前使用gpu运行请至kaggle。 import time import torch from torch import nn , optim import torchvision import numpy as np

Datawhale 组队学习打卡营 任务15:卷积神经网络进阶

隐身守侯 提交于 2020-02-19 00:14:52
目录 深度卷积神经网络(AlexNet) 1. AlexNet 2.载入数据集 3. 训练 使用重复元素的网络(VGG) 1. VGG11的简单实现 ⽹络中的⽹络(NiN) GoogLeNet 1. GoogLeNet模型 . . 深度卷积神经网络(AlexNet) LeNet: 在大的真实数据集上的表现并不尽如⼈意。 1.神经网络计算复杂。 2.还没有⼤量深⼊研究参数初始化和⾮凸优化算法等诸多领域。 机器学习的特征提取:手工定义的特征提取函数 神经网络的特征提取:通过学习得到数据的多级表征,并逐级表⽰越来越抽象的概念或模式。 神经网络发展的限制:数据、硬件 AlexNet #目前GPU算力资源预计17日上线,在此之前本代码只能使用CPU运行。 #考虑到本代码中的模型过大,CPU训练较慢, #我们还将代码上传了一份到 https://www.kaggle.com/boyuai/boyu-d2l-modernconvolutionalnetwork #如希望提前使用gpu运行请至kaggle。 import time import torch from torch import nn , optim import torchvision import numpy as np import sys sys . path . append ( "/home/kesci/input/" )

tensorflow keras使用xception进行图像分类并添加注意力机制

偶尔善良 提交于 2020-02-17 05:25:43
import matplotlib as mpl import matplotlib.pyplot as plt import numpy as np import os import pandas as pd import sklearn import sys import tensorflow as tf import time from tensorflow import keras from tensorflow.keras import layers from tensorflow.keras.models import Model from tensorflow.keras.layers import GlobalAveragePooling2D, GlobalMaxPooling2D, Reshape, Dense, multiply, Permute, Concatenate, Conv2D, Add, Activation, Lambda print(tf.__version__) print(sys.version_info) for module in mpl, np, pd, sklearn, tf, keras: print(module.__name__, module.__version__) # %% train_dir = "./10monkeys

【PyTorch学习笔记】MNIST手写数字识别之MLP实现

怎甘沉沦 提交于 2020-02-16 19:42:30
在本笔记中,我们将以多层感知机(multilayer perceptron,MLP)为例,介绍多层神经网络的相关概念,并将其运用到最基础的MNIST数据集分类任务中,同时展示相关代码。本笔记主要从下面四个方面展开: 文章目录 1 多层感知机(MLP)理论知识 1.1 隐藏层 1.2 激活函数 1.3 多层感知机 1.4 交叉熵(cross entropy)损失函数 2. MNIST数据集简介 3. 代码详解及结果展示 4. 心得体会 1 多层感知机(MLP)理论知识 1.1 隐藏层 多层感知机在单层神经网络的基础上引入了一到多个隐藏层(hidden layer)。隐藏层位于输入层和输出层之间。下图展示了一个多层感知机的神经网络图,它含有一个隐藏层,该层中有5个隐藏单元。 在上图所示的多层感知机中,输入和输出个数分别为4和3,中间的隐藏层中包含了5个 隐藏单元 (hidden unit)。由于输入层不涉及计算,上图中的多层感知机的层数为2。由上图可见,隐藏层中的神经元和输入层中各个输入完全连接,输出层中的神经元和隐藏层中的各个神经元也完全连接。因此,多层感知机中的隐藏层和输出层都是全连接层。 具体来说,给定一个小批量样本 X ∈ R n × d \boldsymbol{X} \in \mathbb{R}^{n \times d} X ∈ R n × d ,其批量大小为 n n n

动手学深度学习——多层感知机

对着背影说爱祢 提交于 2020-02-15 10:35:21
多层感知机 多层感知机是一种简单的神经网络,包含输入层、隐藏层以及输出层。如下图所示。 多层感知机的计算过程 输入层为小批量样本 X ∈ R n × d \boldsymbol{X} \in \mathbb{R}^{n \times d} X ∈ R n × d ,批量大小为 n n n ,输入个数为 d d d 。上述图的多层感知机为单隐藏层,隐藏层输出为 H H H , H ∈ R n × h \boldsymbol{H} \in \mathbb{R}^{n \times h} H ∈ R n × h , h h h 为隐藏层单元个数。网络各层之间全连接,设隐藏层的权重参数和偏差参数分别为 W h ∈ R d × h \boldsymbol{W}_{h} \in \mathbb{R}^{d \times h} W h ​ ∈ R d × h , b h ∈ R 1 × h \boldsymbol{b}_{h} \in \mathbb{R}^{1 \times h} b h ​ ∈ R 1 × h 。输出层的权重和偏差参数分别为 W o ∈ R h × q \boldsymbol{W}_{o} \in \mathbb{R}^{h \times q} W o ​ ∈ R h × q , b o ∈ R 1 × h \boldsymbol{b}_{o} \in \mathbb{R}^

学习笔记2-多层感知机(multilayer perceptron,MLP)

假如想象 提交于 2020-02-15 09:04:10
学习笔记2-多层感知机(multilayer perceptron,MLP) 1、理论基础 1.1 多层感知机的基本公式和原理 多层感知机就是含有至少一个隐藏层的由全连接层组成的神经网络,且每个隐藏层的输出通过激活函数进行变换。多层感知机的层数和各隐藏层中隐藏单元个数都是超参数。以单隐藏层为例并沿用本节之前定义的符号,多层感知机按以下方式计算输出: H = ϕ ( X W h + b h ) , O = H W o + b o , \begin{aligned} \boldsymbol{H} &= \phi(\boldsymbol{X} \boldsymbol{W}_h + \boldsymbol{b}_h),\\ \boldsymbol{O} &= \boldsymbol{H} \boldsymbol{W}_o + \boldsymbol{b}_o, \end{aligned} H O ​ = ϕ ( X W h ​ + b h ​ ) , = H W o ​ + b o ​ , ​ 其中 ϕ \phi ϕ 表示激活函数。 1.2 表达公式 具体来说,给定一个小批量样本 X ∈ R n × d \boldsymbol{X} \in \mathbb{R}^{n \times d} X ∈ R n × d ,其批量大小为 n n n ,输入个数为 d d d