relu

卷积层与池化层

ぃ、小莉子 提交于 2019-11-27 18:52:23
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/weixin_41417982/article/details/81412076 构建了 最简单的网络 之后,是时候再加上卷积和池化了。这篇,虽然我还没开始构思,但我知道,一定是很长的文章。 卷积神经网络(Convolutional Neural Layer, CNN),除了全连接层以外(有时候也不含全连接层,因为出现了Global average pooling),还包含了卷积层和池化层。卷积层用来提取特征,而池化层可以减少参数数量。 卷积层 先谈一下卷积层的工作原理。 我们是使用卷积核来提取特征的,卷积核可以说是一个矩阵。假如我们设置一个卷积核为3*3的矩阵,而我们图片为一个分辨率5*5的图片。那么卷积核的任务就如下所示: 来自: https://mlnotebook.github.io/post/CNN1/ 从左上角开始,卷积核就对应着数据的3*3的矩阵范围,然后相乘再相加得出一个值。按照这种顺序,每隔一个像素就操作一次,我们就可以得出9个值。这九个值形成的矩阵被我们称作激活映射(Activation map)。这就是我们的卷积层工作原理。也可以参考下面一个gif: 其中,卷积核为 1 0 1 0 1 0 1 0 1

神经网络理论知识

China☆狼群 提交于 2019-11-27 15:25:33
感知器: 一个感知器有如下组成部分: 输入权值 ——一个感知器可以接收多个输入(x1,x2,…xn),每个输入上有一个权值wi,此外还有一个偏置项b,就是上图中的w0。 激活函数 ——感知器的激活函数可以有很多选择 输出 ——感知器的输出由某个公式来计算 事实上,感知器不仅仅能实现简单的布尔运算。它可以拟合任何的线性函数,任何线性分类或线性回归问题都可以用感知器来解决。前面的布尔运算可以看作是二分类问题,即给定一个输入,输出0(属于分类0)或1(属于分类1)。然而,感知器却不能实现异或运算。 感知器的训练 训练感知器对于多层感知器的监督式训练最常见的深度学习算法是反向传播。基本的过程是 :   1、将训练样本通过神经网络进行前向传播计算。   2、计算输出误差,通常用均方差:   其中 t 是目标值,y是实际的神经网络输出。其它的误差计算方法也可以,但MSE(均方差)通常是一种比较好的选择。   3.网络误差通过随机梯度下降法来最小化。 前面的权重项和偏置项的值是如何获得的呢? 这就要用到感知器训练算法:将权重项和偏置项初始化为0,然后,利用下面的感知器规则迭代的修改wi和b,直到训练完成。 其中: wi是与输入xi对应的权重项,b是偏置项。事实上,可以把b看作是值永远为1的输入xb所对应的权重。t是训练样本的实际值,一般称之为label。而y是感知器的输出值,它是根据公式(1

莫烦PyTorch学习笔记(二)——激励函数

*爱你&永不变心* 提交于 2019-11-27 13:05:16
1. sigmod函数 函数公式和图表如下图 在sigmod函数中我们可以看到,其输出是在(0,1)这个开区间内,这点很有意思,可以联想到概率,但是严格意义上讲,不要当成概率。sigmod函数曾经是比较流行的,它可以想象成一个神经元的放电率,在中间斜率比较大的地方是神经元的敏感区,在两边斜率很平缓的地方是神经元的抑制区。 当然,流行也是曾经流行,这说明函数本身是有一定的缺陷的。 1) 当输入稍微远离了坐标原点,函数的梯度就变得很小了,几乎为零。在神经网络反向传播的过程中,我们都是通过微分的链式法则来计算各个权重w的微分的。当反向传播经过了sigmod函数,这个链条上的微分就很小很小了,况且还可能经过很多个sigmod函数,最后会导致权重w对损失函数几乎没影响,这样不利于权重的优化,这个问题叫做梯度饱和,也可以叫梯度弥散。 2) 函数输出不是以0为中心的,这样会使权重更新效率降低。对于这个缺陷,在斯坦福的课程里面有详细的解释。 3) sigmod函数要进行指数运算,这个对于计算机来说是比较慢的。 2.tanh函数 tanh函数公式和曲线如下 tanh是双曲正切函数,tanh函数和sigmod函数的曲线是比较相近的,咱们来比较一下看看。首先相同的是,这两个函数在输入很大或是很小的时候,输出都几乎平滑,梯度很小,不利于权重更新;不同的是输出区间,tanh的输出区间是在(-1,1)之间

LSTM记录贴

半世苍凉 提交于 2019-11-27 12:47:14
LSTM记录贴 得平常再做一些任务都会用到LSTM(长短时记忆网络)、GRU以及一些变形的RNN模型,虽然平时用的多,但近来看面经,发现有些问题都忘了,回过头看了又忘,所以准备好好的手推一遍并且记录下来; 先上图 其实如果推理过LSTM的话,基本上这图就没啥用,因为这图说实话画的略显复杂。在真的面试遇到手推LSTM,方法应该是从三个门出发点去反向画图。 先说主人公三个门,分别是遗忘门(f)、输入门(i)、输出门(o) 还有出场的人员包括上个时间步细胞状态(ct-1)、本时刻的输入(xt)、上一时间步的输入(ht-1)、临时细胞状态(c~) 以及lstm每个unit特有的输入框架,相比普通RNN多了一个c而已 那么可以开始推导了 首先要确定,每个lstm会有三个输入(ct-1、ht-1、xt),两个输出(ct、ht) 而ht-1与xt都是向量,在论文中xt与ht-1是直接横向拼接在一起的(可以有不同的结合方式,但是基本是绑定的),因为两个向量都是定长,所以在经过每个门的线性变换矩阵输出也是定长。 那么开始第一个门,决定我们会从细胞状态中丢弃什么信息,所以叫遗忘门,f= sigmoid([xt,ht-1]Wf+bf),输出的是一个概率,遗忘概率。那么遗忘的对象是谁?那必然是上个时刻输入的细胞状态ct-1 那么可以画出图 输入门(或者更新门)i = sigmoid([xt,ht-1]Wi

Torch笔记

半世苍凉 提交于 2019-11-27 11:04:56
Torch笔记 初始化很重要 切记 !不同的初始化产生的结果完全不同 relu函数可以解决sigmod函数梯度弥散的问题 tanh函数在卷积用的比较多 Leaky Relu 泄露的relu函数 使x<0时仍然具有梯度 SELU函数时两个函数的concat(不常用) softplus同样是relu函数平滑的版本 在0处平滑(不常用) 如何防止Over fitting 使用更多的数据 控制模型复杂度 使用更浅的模型 正则化 L1 L2正则 lambda参数 使用正则的前提是模型已经over fitting了 optimizer = optim.SGD(net.parameters(),lr = learning_rate,weight_decay = 0.01) Dropout torch.nn.Dropout(0.5) 将上一层数据减少一半传播 Data argumentation 数据增强 Early Stopping 优化器 momentum 动量 使用只需在优化器中添加momentum参数即可 Adam优化器不需要添加动量 因为他自带 learnning rate decay 动态LR ReduceLROnPlateau(optimzer,'min') 代码笔记 device = torch.device('cuda:0') net = MLP().to(device) #

深度学习 Relu 函数 (by shany shang)

╄→尐↘猪︶ㄣ 提交于 2019-11-27 04:58:05
激活函数所在的位置: 图1 激活函数 :在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数。引入激活函数是为了增加神经网络模型的非线性。没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了。 ReLU函数: 来源: https://blog.csdn.net/szx123_/article/details/99416274

常见激活函数,及其优缺点 - 面试篇

你离开我真会死。 提交于 2019-11-27 03:15:30
废话不多说,直接开问。 问:什么是激活函数? 在多层神经网络中,上层节点的输出和下层节点的输入之间具有一个函数关系,这个函数称为激活函数。 问:激活函数有什么用? 如果没有激励函数,在这种情况下你每一层节点的输入都是上层输出的线性函数,无论你神经网络有多少层,输出都是输入的线性组合,相当于没有隐藏层,网络的学习能力有限。 深度学习最主要的特点就是:多层,非线性。 多层为了能够学习更多的东西;没有非线性,多层和单层没什么区别,就是简单的线性组合,连异或都解决不了。 感兴趣的可以看这篇文章: 为什么神经网络需要解决多层和非线性问题 问:介绍一下你熟悉的激活函数?特点,优缺点 sigmoid函数 f ( z ) = 1 1 + e − z f(z) = \frac{1}{1+e^{-z}} f ( z ) = 1 + e − z 1 ​ 特点: 它能够把输入的连续实值变换为0和1之间的输出,特别的,如果是非常大的负数,那么输出就是0;如果是非常大的正数,输出就是1. 导数曲线: 缺点: 容易导致梯度消失。 如果我们初始化神经网络的权值为 [0,1]之间的随机值,由 反向传播算法 的数学推导可知,梯度从后向前传播时,每传递一层梯度值都会减小为原来的0.25倍,如果神经网络隐层特别多,那么梯度在穿过多层后将变得非常小接近于0,即出现梯度消失现象。 (这里有个坑,面试官可能听你提起反向传播

refinedet网络结构

痴心易碎 提交于 2019-11-27 01:42:47
refinedet只预测4个层,并且只有conv6_1、conv6_2,没有ssd中的conv7、8、9 refinedet的4个层都只有1个aspect ratio和1个min_size,所以每层每个点只有3个anchor,arm中做location的conv4_3_norm_mbox_loc等层都是3*4个channel,做confidence的conv4_3_norm_mbox_conf都是6个channel,因为这里变成了2分类,每个anchor必须要有negative和positive的概率 refinedet是两步都要回归bounding box的框,refinedet中的odm_loss就相当于ssd中的mbox_loss,mbox_loss获得了anchor的坐标后会加上回归再进行训练,odm_loss获得anchor的坐标后先要加上arm_loc的回归,再加odm_loc的回归,这样再去进行loss计算. name: "vgg_1/8" layer { name: "data" type: "AnnotatedData" top: "data" top: "label" include { phase: TRAIN } transform_param { mirror: true mean_value: 104.0 mean_value: 117.0 mean

MobileNet V2深入理解

大城市里の小女人 提交于 2019-11-26 13:51:57
转载: https://zhuanlan.zhihu.com/p/33075914 MobileNet V2 论文初读 转载: https://blog.csdn.net/wfei101/article/details/79334659 网络模型压缩和优化:MobileNet V2网络结构理解 转载: https://zhuanlan.zhihu.com/p/50045821 mobilenetv1和mobilenetv2的区别 MobileNetV2: Inverted Residuals and Linear Bottlenecks:连接: https://128.84.21.199/pdf/1801.04381.pdf MobileNet v1 中使用的 Depthwise Separable Convolution是模型压缩的一个最为经典的策略,它是通过将跨通道的 卷积换成单通道的 卷积+跨通道的 卷积来达到此目的 的。 MobileNet V2主要的改进有两点 : 1、Linear Bottlenecks。因为ReLU的在通道数较少的Feature Map上有非常严重信息损失问题,所以 去掉了小维度输出层后面的非线性激活层ReLU,保留更多的特征信息 ,目的是为了保证模型的表达能力。 2、Inverted Residual block。该结构和传统residual

3、深度学习基础

天涯浪子 提交于 2019-11-26 10:50:35
3.1 基本概念 3.1.1 神经网络组成 神经网络类型众多,其中最为重要的是多层感知机。为了详细地描述神经网络,我们先从最简单的神经网络说起。 感知机 多层感知机中的特征神经元模型称为感知机,由Frank Rosenblatt于1957年发明。 简单的感知机如下图所示: 其中$x_1$,$x_2$,$x_3$为感知机的输入,其输出为: $ output = \left{ \begin{aligned} 0, \quad if \ \ \sumi wi xi \leqslant threshold \ 1, \quad if \ \ \sumi wi xi > threshold \end{aligned} \right. $ 假如把感知机想象成一个加权投票机制,比如 3 位评委给一个歌手打分,打分分别为$ 4 $分、$1$ 分、$-3 $分,这$ 3$ 位评分的权重分别是 $1、3、2$,则该歌手最终得分为 $4 \times 1 + 1 \times 3 + (-3) \times 2 = 1$ 。按照比赛规则,选取的 $threshold$ 为 $3$,说明只有歌手的综合评分大于$ 3$ 时,才可顺利晋级。对照感知机,该选手被淘汰,因为: $$ \sumi wi x_i < threshold=3, output = 0 $$ 用 $-b$ 代替 $threshold$