图像梯度

斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时12&&13

╄→гoц情女王★ 提交于 2019-12-10 03:05:50
课时12 神经网络训练细节part2(上) 训练神经网络是由四步过程组成,你有一个完整的数据集图像和标签,从数据集中取出一小批样本,我们通过网络做前向传播得到损失,告诉我们目前分类效果怎么样。然后我们反向传播来得到每一个权重的梯度,这个梯度告诉我们如何去调整每一个权重,最终我们能够更好的分类图片。 为什么要使用激活函数? 如果在整个的神经网络中不使用激活函数,你的网络的分类能力基本等同于一个线性分类器,所以激活函数是相当关键的。他提供了所有的方法,你可以他用来存储数据 BN使得网络的训练更加健壮。 参数更新 补救SGD垂直进展快的方法,使用动量更新,他可以理解为一个球滚动着接近中间,在这个情况下的梯度可以视作一种动力,物理学中的这种力量,就相当于加速度,而mu倍的v相当于摩擦力。 v初始化为0,其实没什么影响 学习速率是应用到所有方向上的 Nesterov动量更新 我们直接达到这个目的,然后计算梯度。 我们进行了重新整理 虽然有很多局部最小值,但是他们的损失其实是差不多的。当你扩大神经网络的规模时候,你的最坏和最好局部最小值之间的差别随着时间的推移会越来越小。有研究表明,基本上也就不存在坏的局部最小值了,当然这也只在很小的网络中出现。事实上,你用不同的值初始化,你会得到相同的结果和损失,所以,基本上不存在不好的局部最小值。 AdaGrad更新 由凸优化理论发展而来的

【机器学习】激活函数(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)).

深度学习暑期学校(加拿大、蒙特利尔,2016.8.1-7)

半世苍凉 提交于 2019-12-08 00:21:00
learning to see.pdf @lutingting 2016-11-04 16:15 字数 10899 阅读 4087 SIFT特征提取及匹配 数字图像处理 图像特征提取 SIFT特征提取及匹配 1.SIFT(Scale-invariant feature transform)算子的核心思想 2.什么是尺度空间呢? 2.1 一篇百度文库的文章关于尺度空间的分析 例子1 例子2 现实生活中的例子 2.2 SIFT中的尺度空间的概念 3.SIFT特征提取 3.1 尺度空间极值检测 3.1.1 尺度空间的建立(高斯金字塔的建立) 3.1.2 图像差分高斯金字塔(DoG)的建立 3.1.3 尺度空间中特征点的检测(DoG中极值点的检测) 3.2 关键点位置及尺度确定 3.3 关键点方向确定 3.4 特征向量生成 4.SIFT特征的匹配 5.下面是一些参考程序 5.1 5.2 1.SIFT(Scale-invariant feature transform)算子的核心思想 利用不同尺度的高斯核函数对图像进行平滑,即构造图像的尺度空间 比较不同尺度平滑后的图像差别,在某局部范围内,差别最大或者差别最小的像素点就是特征明显的点 由于SIFT特征的检测方式,使得它具有: 尺度不变性:在尺度空间内进行的特征点检测 2.什么是尺度空间呢? 2.1 一篇百度文库的文章关于尺度空间的分析

大众点评搜索基于知识图谱的深度学习排序实践

余生颓废 提交于 2019-12-07 17:52:22
1. 引言 挑战与思路 搜索是大众点评App上用户进行信息查找的最大入口,是连接用户和信息的重要纽带。而用户搜索的方式和场景非常多样,并且由于对接业务种类多,流量差异大,为大众点评搜索(下文简称点评搜索)带来了巨大的挑战,具体体现在如下几个方面: 意图多样 :用户查找的信息类型和方式多样。信息类型包括POI、榜单、UGC、攻略、达人等。以找店为例,查找方式包括按距离、按热度、按菜品和按地理位置等多种方式。例如用户按照品牌进行搜索时,大概率是需要寻找距离最近或者常去的某家分店;但用户搜索菜品时,会对菜品推荐人数更加敏感,而距离因素会弱化。 业务多样 :不同业务之间,用户的使用频率、选择难度以及业务诉求均不一样。例如家装场景用户使用频次很低,行为非常稀疏,距离因素弱,并且选择周期可能会很长;而美食多为即时消费场景,用户行为数据多,距离敏感。 用户类型多样 :不同的用户对价格、距离、口味以及偏好的类目之间差异很大;搜索需要能深度挖掘到用户的各种偏好,实现定制化的“千人千面”的搜索。 LBS的搜索 :相比电商和通用搜索,LBS的升维效应极大地增加了搜索场景的复杂性。例如对于旅游用户和常驻地用户来说,前者在搜索美食的时候可能会更加关心当地的知名特色商户,而对于距离相对不敏感。 上述的各项特性,叠加上时间、空间、场景等维度,使得点评搜索面临比通用搜索引擎更加独特的挑战。而解决这些挑战的方法

关于梯度爆炸和梯度消失的详解(转载)

假装没事ソ 提交于 2019-12-06 14:30:40
转载链接: https://www.jianshu.com/p/3f35e555d5ba 1.为什么使用梯度下降来优化神经网络参数? 反向传播(用于优化神网参数) :根据损失函数计算的误差通过反向传播的方式,指导深度网络参数的更新优化。 采取反向传播的原因:首先,深层网络由许多线性层和非线性层堆叠而来,每一层非线性层都可以视为是一个非线性函数 (非线性来自于非线性激活函数),因此整个深度网络可以视为是一个复合的非线性多元函数。 我们最终的目的是希望这个非线性函数很好的完成输入到输出之间的映射,也就是找到让损失函数取得极小值。所以最终的问题就变成了一个寻找函数最小值的问题,在数学上,很自然的就会想到使用梯度下降来解决。 2.梯度消失、爆炸会带来哪些影响 举个例子,对于一个含有三层隐藏层的简单神经网络来说, 当梯度消失发生时,接近于输出层的隐藏层由于其梯度相对正常,所以权值更新时也就相对正常,但是当越靠近输入层时,由于梯度消失现象,会导致靠近输入层的隐藏层权值更新缓慢或者更新停滞。这就导致在训练时,只等价于后面几层的浅层网络的学习。 3.产生的原因 以最简单的网络结构为例,假如有三个隐藏层,每层的神经元个数都是1,且对应的非线性函数为 (其中 为某个激活函数)如下图: 现在假设我们需要更新参数 ,那么我们就要求出损失函数对参数 的导数 而对于激活函数,之前一直使用Sigmoid函数

图像分割之canny边缘检测

北城余情 提交于 2019-12-05 22:01:39
转载 http://www.cnblogs.com/techyan1990/p/7291771.html 1. 写在前面 最近在做边缘检测方面的一些工作,在网络上也找了很多有用的资料,感谢那些积极分享知识的先辈们,自己在理解Canny边缘检测算法的过程中也走了一些弯路,在编程实现的过程中,也遇到了一个让我怀疑人生的BUG(日了狗狗)。就此写下此文,作为后记,也希望此篇文章可以帮助那些在理解Canny算法的道路上暂入迷途的童鞋。废话少说,上干货。 2. Canny边缘检测算法的发展历史 Canny边缘检测于1986年由JOHN CANNY首次在论文《A Computational Approach to Edge Detection》中提出,就此拉开了Canny边缘检测算法的序幕。 Canny边缘检测是从不同视觉对象中提取有用的结构信息并大大减少要处理的数据量的一种技术,目前已广泛应用于各种计算机视觉系统。Canny发现,在不同视觉系统上对边缘检测的要求较为类似,因此,可以实现一种具有广泛应用意义的边缘检测技术。边缘检测的一般标准包括: 1) 以低的错误率检测边缘,也即意味着需要尽可能准确的捕获图像中尽可能多的边缘。 2) 检测到的边缘应精确定位在真实边缘的中心。 3) 图像中给定的边缘应只被标记一次,并且在可能的情况下,图像的噪声不应产生假的边缘。 为了满足这些要求

[转帖]CNN、RNN、DNN的一般解释

血红的双手。 提交于 2019-12-05 16:19:36
CNN、RNN、DNN的一般解释 https://www.jianshu.com/p/bab3bbddb06b?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation 0.0952017.10.16 19:10:36字数 3,145阅读 4,648 CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别? 转自知乎 科言君 的回答 神经网络技术起源于上世纪五、六十年代,当时叫感知机(perceptron),拥有输入层、输出层和一个隐含层。输入的特征向量通过隐含层变换达到输出层,在输出层得到分类结果。早期感知机的推动者是Rosenblatt。 (扯一个不相关的:由于计算技术的落后,当时感知器传输函数是用线拉动变阻器改变电阻的方法机械实现的,脑补一下科学家们扯着密密麻麻的导线的样子…) 但是,Rosenblatt的单层感知机有一个严重得不能再严重的问题,即它对稍复杂一些的函数都无能为力(比如最为典型的“异或”操作)。连异或都不能拟合,你还能指望这货有什么实际用途么o(╯□╰)o 随着数学的发展,这个缺点直到上世纪八十年代才被Rumelhart、Williams、Hinton、LeCun等人(反正就是一票大牛)发明的多层感知机

收敛速度更快更稳定的Wasserstein GAN(WGAN)

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-05 10:53:28
生成对抗网络(GANs)是一种很有力的生成模型,它解决生成建模问题的方式就像在两个对抗式网络中进行比赛:给出一些噪声源,生成器网络能够产生合成的数据,鉴别器网络在真实数据和生成器的输出中进行鉴别。GAN能够产生十分生动的样例,但是很难训练。尽管最近大量的研究工作都投入到了寻找能让GAN稳定训练的方法上,但GAN的持续稳定训练成了依然是一个公开的问题。 概要最近提出的Wasserstein GAN(WGAN)在GAN的稳定训练上取得了重大进展,但是依然会产生低质量的样例或者出现在某些设置上不能收敛的情况。会产生这些训练失败的样例一般都是因为,作者通过在WGAN中使用权重修剪来达到在鉴别器中强制利普希茨(Lipschitz)限制条件的目的,但这样的方式会导致病态行为。 根据上述情况,文章提出了一种替代方法来强制Lipschitz限制条件:不修剪权重,而是根据输入来惩罚鉴别器的梯度正则项。这一方法方法与权重修剪WGAN相比,收敛的更快并且能产生更高质量的样例。这一替代方法基本能够保证很稳定的GAN训练。这是自深度学习发展以来,第一次可以训练多种多样的GAN结构,并且几乎不用进行超参数的调整,包括101层的ResNet和离散数据上的语言模型。 本文将从提出背景,算法介绍,实验结果,论文实现等四个方面来介绍这篇文章。 提出背景作者发现,WGAN的权重修剪会导致优化困难,并且即使能够优化成功

[转载]--令人拍案叫绝的Wasserstein GAN

我只是一个虾纸丫 提交于 2019-12-05 10:46:05
文章转载自: https://zhuanlan.zhihu.com/p/25071913 令人拍案叫绝的Wasserstein GAN 郑华滨 · 2 天前 在GAN的相关研究如火如荼甚至可以说是泛滥的今天,一篇新鲜出炉的arXiv论文《 Wassertein GAN 》却在Reddit的Machine Learning频道火了,连Goodfellow都 在帖子里和大家热烈讨论 ,这篇论文究竟有什么了不得的地方呢? 要知道自从 2014年Ian Goodfellow提出 以来,GAN就存在着训练困难、生成器和判别器的loss无法指示训练进程、生成样本缺乏多样性等问题。从那时起,很多论文都在尝试解决,但是效果不尽人意,比如最有名的一个改进 DCGAN 依靠的是对判别器和生成器的架构进行实验枚举,最终找到一组比较好的网络架构设置,但是实际上是治标不治本,没有彻底解决问题。而今天的主角Wasserstein GAN(下面简称WGAN)成功地做到了以下爆炸性的几点: 彻底解决GAN训练不稳定的问题,不再需要小心平衡生成器和判别器的训练程度 基本解决了collapse mode的问题,确保了生成样本的多样性 训练过程中终于有一个像交叉熵、准确率这样的数值来指示训练的进程,这个数值越小代表GAN训练得越好,代表生成器产生的图像质量越高(如题图所示) 以上一切好处不需要精心设计的网络架构

PyTorch教程001

房东的猫 提交于 2019-12-05 09:46:05
第一节 基本的操作 点我,所有内容翻译于此链接 什么是PyTorch? 它是基于Python语言的科学计算工具包,其设计目的包括以下两个方面: 替代Numpy从而可以使用强大的GPU进行计算 一个深读学习的研究平台,致力于提供最大的灵活性与速度 我们开始吧~ Tensors Tensors和Numpy的ndarrays很像,与之不同之处在于Tensor可以在GPU上进行运算从而获得更快的计算速度。 from __future__ import print_function import torch 利用pyTorch构造一个未初始化的5×3的矩阵: x = torch.Tensor( 5 , 3 ) print(x) -9.3921e+17 4.5628e-41 -9.3921e+17 4.5628e-41 0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00 [torch.FloatTensor of size 5x3] 类似于上一步,构造一个随机(值域为[0,1])初始化的矩阵: x = torch.rand( 5 , 3 ) print(x) 0.9144 0.5597 0.7737 0