relu

PReLu论文解读

拥有回忆 提交于 2019-12-15 08:31:51
历史以来,提升准确率方法 增加深度,增大宽度,使用更小的stride, 新的非线性激活函数、巧妙的结构设计、更好的归一化技巧、数据增广、大数据规模 在这里,ai表示第i个神经元的系数,不同神经元 PRelu系数不一样 当ai固定为一个较小数(ai=0.01)时,为Leaky ReLu 在文章中,作者使ai=0.5初始化 称每层共享ai的层位 channel-shared,不共享为channel-wise channel-shared、channel-wised、Relu对比实验 1、channel-wise>channel-shared>ReLu 2、发现随着在deeper layer中,ai系数越小,即非线性程度越高、说明在表层提取保留更多信息而在深层更discriminative(具有辨识力) 网络初始化: 1、以往网络参数初始化 服从高斯分布的随机初始化,有固定方差 2、VGG中使用 先训练浅层网络、再利用预训练浅层网络参数训练深层网络 3、加辅助分类器在中间层帮助收敛 二、论文中提出新的网络初始化方法 使得在更深的网络中也不至于diminishing,变得trainable,同时收敛更快 提出空间金字塔池化 spatial pyramid pooling 来源: CSDN 作者: qq_38897423 链接: https://blog.csdn.net/qq

深度学习基础问题总结(一)

て烟熏妆下的殇ゞ 提交于 2019-12-11 13:17:02
激活函数;梯度消失梯度爆炸问题;损失函数;反向传播; 文章目录 一、激活函数 1.什么是激活函数?激活函数是干什么的? 2.常见的激活函数 3.为啥relu用的比较多?relu的优点? 4.为啥sigmoid会有梯度显示现象? 二、梯度消失、梯度爆炸 1.梯度消失的例子 2.梯度消失与梯度爆炸 3.分析sigmoid梯度消失 4.解决梯度消失的方法 5.实验过程中怎么发现是否有梯度消失或者梯度爆炸? 三、损失函数 1.交叉熵 2.为啥人们选择交叉熵 3.回归问题损失函数 参考文献 一、激活函数 1.什么是激活函数?激活函数是干什么的? 激活函数是在神经网络每一层卷积或者全连接后的非线性函数部分。 她是干什么的?如果没有激活函数只有前面的全连接的话,相当于整个神经网络只有线性函数,每一层都是权重与输入的乘机,网络的拟合能力有限。正因为上面的原因,我们决定引入非线性函数作为激励函数,这样深层神经网络表达能力就更加强大(不再是输入的线性组合,而是几乎可以逼近任意函数)。 2.常见的激活函数 记住下图就可以了 3.为啥relu用的比较多?relu的优点? 1、sigmoid激活函数以及tanh激活函数容易产生 梯度消失现象 ; relu解决了梯度消失问题。 2、sigmoid计算量较大,而 relu计算量较小 。 速度快 3、relu会使得负数为0,使得网络具有一定稀疏性,提高网络表达能力

Keras中Sequential模型及方法详细总结

爷,独闯天下 提交于 2019-12-11 04:43:32
Sequential 序贯模型 序贯模型是函数式模型的简略版,为最简单的线性、从头到尾的结构顺序,不分叉,是多个网络层的线性堆叠。 Keras实现了很多层,包括core核心层,Convolution卷积层、Pooling池化层等非常丰富有趣的网络结构。 我们可以通过将层的列表传递给Sequential的构造函数,来创建一个Sequential模型。 from keras . models import Sequential from keras . layers import Dense , Activation model = Sequential ( [ Dense ( 32 , input_shape = ( 784 , ) ) , Activation ( 'relu' ) , Dense ( 10 ) , Activation ( 'softmax' ) , ] ) 也可以使用.add()方法将各层添加到模型中: model = Sequential ( ) model . add ( Dense ( 32 , input_dim = 784 ) ) model . add ( Activation ( 'relu' ) ) 指定输入数据的尺寸 模型需要知道它所期待的输入的尺寸(shape)。出于这个原因,序贯模型中的第一层(只有第一层,因为下面的层可以自动的推断尺寸

keras Mask Rcnn代码走读(七)-mask生成

喜你入骨 提交于 2019-12-11 00:49:42
获取了待检测图片的分类回归信息,我们将回归信息(即待检测目标的边框信息)单独提取出来,结合金字塔特征mrcnn_feature_maps,进行Mask生成工作(input_image_meta用于提取输入图片长宽,进行金字塔ROI处理 # Detections # output is [batch, num_detections, (y1, x1, y2, x2, class_id, score)] in # normalized coordinates detections = DetectionLayer(config, name="mrcnn_detection")( [rpn_rois, mrcnn_class, mrcnn_bbox, input_image_meta]) # Create masks for detections detection_boxes = KL.Lambda(lambda x: x[..., :4])(detections) mrcnn_mask = build_fpn_mask_graph(detection_boxes, mrcnn_feature_maps, input_image_meta, config.MASK_POOL_SIZE, config.NUM_CLASSES, train_bn=config.TRAIN_BN) def

tensorflow学习笔记——AlexNet

断了今生、忘了曾经 提交于 2019-12-10 16:19:04
  2012年,Alex Krizhevsky、Ilya Sutskever在多伦多大学Geoff Hinton的实验室设计出了一个深层的卷积神经网络AlexNet,夺得了2012年ImageNet LSVRC的冠军,且准确率远超第二名(top5错误率为15.3%,第二名为26.2%),引起了很大的轰动。AlexNet可以说是具有历史意义的一个网络结构,在此之前,深度学习已经沉寂了很长时间,自2012年AlexNet诞生之后,后面的ImageNet冠军都是用卷积神经网络(CNN)来做的,并且层次越来越深,使得CNN成为在图像识别分类的核心算法模型,带来了深度学习的大爆发。   下面首先学习AlexNet网络的创新点,然后在学习AlexNet的网络结构,最后在用代码实现AlexNet。 1,AlexNet网络的创新点   AlexNet将LeNet的思想发扬光大,把CNN的基本原理应用到了很深很宽的网络中。AlexNet主要使用到的新技术点如下:    (1)成功使用ReLU作为CNN的激活函数,并验证其效果在较深的网络超过了Sigmoid,成功解决了Sigmoid在网络较深时的梯度弥散问题。虽然ReLU激活函数在很久之前就被提出了,但直到AlexNet的出现才将其发扬光大。   在最初的感知机模型中,输入和输出的关系如下:   虽然只是单纯的线性关系,这样的网络结构有很大的局限性

tensorflow学习笔记——AlexNet

帅比萌擦擦* 提交于 2019-12-10 10:51:54
1,AlexNet网络的创新点   AlexNet将LeNet的思想发扬光大,把CNN的基本原理应用到了很深很宽的网络中。AlexNet主要使用到的新技术点如下:    (1)成功使用ReLU作为CNN的激活函数,并验证其效果在较深的网络超过了Sigmoid,成功解决了Sigmoid在网络较深时的梯度弥散问题。虽然ReLU激活函数在很久之前就被提出了,但直到AlexNet的出现才将其发扬光大。   在最初的感知机模型中,输入和输出的关系如下:   虽然只是单纯的线性关系,这样的网络结构有很大的局限性:即使用很多这样结构的网络层叠加,其输出和输入仍然是线性关系,无法处理有非线性关系的输入输出。因此,对每个神经元的输出做个非线性的转换也就是,将上面的加权求和的结果输入到一个非线性函数,也就是激活函数中。这样,由于激活函数的引入,多个网络层的叠加就不再是单纯的线性变换,而是具有更强的表现能力。   在网络层较少时,Sigmoid函数的特性能够很好的满足激活函数的作用:它把一个实数压缩至0到1之间,当输入的数字非常大的时候,结果会接近1,;当输入非常大的负数时,则会得到接近0的结果。这种特性,能够很好的模拟神经元在受刺激后,是否被激活向后传递信息(输出为0,几乎不被激活;输出为1,完全被激活)。Sigmoid函数一个很大的问题就是梯度饱和。观察Sigmoid函数的曲线,当输入的数字较大

ReLU derivative with NumPy

无人久伴 提交于 2019-12-10 10:25:09
问题 import numpy as np def relu(z): return np.maximum(0,z) def d_relu(z): z[z>0]=1 z[z<=0]=0 return z x=np.array([5,1,-4,0]) y=relu(x) z=d_relu(y) print("y = {}".format(y)) print("z = {}".format(z)) The code above prints out: y = [1 1 0 0] z = [1 1 0 0] instead of y = [5 1 0 0] z = [1 1 0 0] From what I understand the function calls I've used should only be doing passing by value,passing a copy of the variable. Why is my d_relu function affecting the y variable? 回答1: Your first mistake is in

U-net实现医学图像分割

旧时模样 提交于 2019-12-09 22:18:09
here U-net论文 学Unet,那么用keras版的也是蛮好的,但是到最后有自己的一点需求后再在此基础上搭自己的模块后Keras就显得很麻烦了,你需要考虑很多东西,比如张量对齐一类的,甚至调试都很难,因为Keras是基于tensorflow的,现在pytorch由于它简单灵活的特性被广泛使用,很多发表的论文都是用Pytorch实现的,特别是最近,有超过tensorflow的趋势, 本工程文件实现了如下功能: 1.基于Unet的单类分割 2.自动实现n折交叉验证 3.损失函数为Dice+BCE 4.优化器为SGD,ploy学习策略 5.自动保存n折的checkpoint文件 6.自动保存n折的tensorboard log日志,支持前后多次实验可视化对比 7.支持前后多次实验对比,每次修改UNet, 只需将UNet文件夹复制后重命名为:“UNet_修改内容”即可,在此基础上修改 这里主要讲解data.py, model.py, main.py三个文件(也只要这三个python文件) 先看一下main.py,按照main.py文件的运行顺序去查找每个函数的意义: from model import * from data import * #导入这两个文件中的所有函数 #os.environ["CUDA_VISIBLE_DEVICES"] = "0" data_gen_args

【机器学习】激活函数(ReLU, Swish, Maxout)

一个人想着一个人 提交于 2019-12-09 13:25:11
https://blog.csdn.net/ChenVast/article/details/81382939 神经网络中使用激活函数来加入非线性因素,提高模型的表达能力。 ReLU(Rectified Linear Unit,修正线性单元) 形式如下: ReLU 公式近似推导:: 下面解释上述公式中的softplus,Noisy ReLU. softplus 函数与ReLU函数接近,但比较平滑, 同ReLU一样是单边抑制,有宽广的接受域(0,+inf), 但是由于指数运算,对数运算计算量大的原因,而不太被人使用.并且从一些人的使用经验来看(Glorot et al.(2011a)),效果也并不比ReLU好. softplus的导数恰好是sigmoid函数. softplus 函数图像 : Noisy ReLU 1 ReLU可以被扩展以包括高斯噪声(Gaussian noise): f(x)=max(0,x+Y),Y∼N(0,σ(x))f(x)=max(0,x+Y),Y∼N(0,σ(x)) Noisy ReLU 在受限玻尔兹曼机解决计算机视觉任务中得到应用. ReLU上界设置 : ReLU相比sigmoid和tanh的一个缺点是没有对上界设限.在实际使用中,可以设置一个上限,如ReLU6经验函数: f(x)=min(6,max(0,x))f(x)=min(6,max(0,x)).

batch normalize、relu、dropout 等的相对顺序

佐手、 提交于 2019-12-09 12:50:57
1.https://blog.csdn.net/B08370108/article/details/83783008 batch norm、relu、dropout 等的相对顺序 Ordering of batch normalization and dropout in TensorFlow? 在 Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 一文中,作者指出,“we would like to ensure that for any parameter values, the network always produces activations with the desired distribution”(produces activations with the desired distribution,为激活层提供期望的分布)。 因此 Batch Normalization 层恰恰插入在 Conv 层或全连接层之后,而在 ReLU等激活层之前。而对于 dropout 则应当置于 activation layer 之后。 2.BN和Dropout共同使用时会出现的问题 BN和Dropout单独使用都能减少过拟合并加速训练速度