图像梯度

梯度下降(GD)

不羁的心 提交于 2020-01-07 02:55:10
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一、梯度下降算法概述 1、介绍 梯度下降法(gradient descent),又名最速下降法(steepest descent)是求解无约束最优化问题最常用的方法,它是一种迭代方法,每一步主要的操作是求解目标函数的梯度向量,将当前位置的负梯度方向作为搜索方向(因为在该方向上目标函数下降最快,这也是最速下降法名称的由来)。 梯度下降法特点:越接近目标值,步长越小,下降速度越慢。 这里每一个圈代表一个函数梯度,最中心表示函数极值点,每次迭代根据当前位置求得的梯度(用于确定搜索方向以及与步长共同决定前进速度)和步长找到一个新的位置,这样不断迭代最终到达目标函数局部最优点(如果目标函数是凸函数,则到达全局最优点)。 我们更加直观清晰的说明梯度下降,其实就是一个公式: 上面的公式这个位置更新公式,说白了,就是你每走一步,就记录下你现在的位置,也就是等号左边的θi,那么走一步走多远呐?答案应该是α,那你要朝哪个方向走呢?答案是J(θ)关于θi的偏导数。 说明: 在这里我们区分下经常用的函数: 损失函数(Loss Function )是定义在单个样本上的,算的是一个样本的误差。 代价函数(Cost Function )是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均。 目标函数(Object

深度学习笔记(一)

瘦欲@ 提交于 2020-01-05 22:11:46
一、R-CNN 增加了候选区域选择,先选择几个候选区,然后在候选区中做检测。 二、mini-batch&Batch Normalization 我们已知在梯度下降中需要对所有样本进行处理过后然后走一步,那么如果我们的样本规模的特别大的话效率就会比较低。假如有500万,甚至5000万个样本(在我们的业务场景中,一般有几千万行,有些大数据有10亿行)的话走一轮迭代就会非常的耗时。这个时候的梯度下降叫做full batch。 所以为了提高效率,我们可以把样本分成等量的子集。 例如我们把100万样本分成1000份, 每份1000个样本, 这些子集就称为mini batch。然后我们分别用一个for循环遍历这1000个子集。 针对每一个子集做一次梯度下降。 然后更新参数w和b的值。接着到下一个子集中继续进行梯度下降。 这样在遍历完所有的mini batch之后我们相当于在梯度下降中做了1000次迭代。 我们将遍历一次所有样本的行为叫做一个 epoch,也就是一个世代。 在mini batch下的梯度下降中做的事情其实跟full batch一样,只不过我们训练的数据不再是所有的样本,而是一个个的子集。 这样在mini batch我们在一个epoch中就能进行1000次的梯度下降,而在full batch中只有一次。 这样就大大的提高了我们算法的运行速度。 如上图,左边是full

梯度下降法实现一元线性回归

雨燕双飞 提交于 2020-01-02 23:45:57
梯度下降法实现一元线性回归 给定一个数据集,该数据集是n行2列的数据。当用记事本打开数据时,每行的2列数据是用逗号隔开的。首先要提取文件里面的数据,之后根据提取的数据进行画图。 数据集见链接:https://pan.baidu.com/s/1Bhn47ynrNaPO_eG191VuUw 提取码:qweu 代码如下: # 用于计算数据要用到的包numpy import numpy as np # 画图要用到的包matplotlib import matplotlib . pyplot as plt # 载入数据要用到numpy(由于项目和文件在同一个目录下,所以 # 可以直接填写文件的名字就能加载文件,如果不是在同一个目录 # 下,需要填写绝对路径;文件文件分隔符是“,”) data = np . genfromtxt ( "data.csv" , delimiter = "," ) # “ :”在冒号的前后都不填任何信息,表示从第 0 行取到最后一行。 # 逗号前表示取行,逗号后表示取列。 x_data表示取所有行的第 1 列, # 下标从 0 开始;y_data表示取所有行的第 2 列 x_data = data [ : , 0 ] y_data = data [ : , 1 ] # 调用matplotlib包来画图。scatter表示画散点图 plt . scatter ( x

永兴的笔记-OpenCV-6图像梯度和边缘检测

。_饼干妹妹 提交于 2020-01-01 15:15:48
一、什么是图像梯度: 图像的梯度就是描述图像中灰度的变化,微积分就是求函数的变化率,即导数(梯度)。图像的梯度相当于2个相邻像素之间的差值。 图像梯度可以把图像看成二维离散函数,图像梯度其实就是这个二维离散函数的求导: 在x方向,选取某个像素,假设其像素值是100,沿x方向的相邻像素分别是90,90,90,则根据上面的计算其x方向梯度分别是10,0,0。这里只取变化率的绝对值,表明变化的大小即可。 灰度值100和90之间亮度相差10,并不是很明显,与一大群90的连续灰度值在一起,轮廓必然是模糊的。我们注意到,如果相邻像素灰度值有变化,那么梯度就有值,如果相邻像素灰度值没有变化,那么梯度就为0。如果我们把梯度值与对应的像素相加,那么灰度值没有变化的,像素值不变,而有梯度值的,灰度值变大了,那么图像的边缘更加明显。 二、OpenCV中的图像梯度应用(检测边缘): OpenCV提供三种类型的梯度滤波器或高通滤波器,Sobel,Scharr和Laplacian. 高通滤波器(英语:High-pass filter)是容许高频信号通过、但减弱(或减少)频率低于截止频率信号通过的滤波器。对于不同滤波器而言,每个频率的信号的减弱程度不同。它有时被称为低频剪切滤波器; 1、Sober 算子 Sober 算子是离散微分算子(discrete differentiation operator)

表面应变计算(Surface strain calculation)

喜你入骨 提交于 2019-12-31 22:53:31
1. 背景介绍 应力-应变曲线能够有效地帮助我们分析材料的力学性能,应力指物体单位面积上所受到力的大小,应变指物体的相对变形量。正应变描述的是沿着某一方向上长度的变化量,而切应变描述的是角度的变化量。 根据力的大小可根据胡克定律理论上计算得到任意位置应变。对于现代的测量方式而言,主要有引伸计、应变片、光学测量等方式,光学测量因非接触、精度高的特点,在工业测量领域受到高度关注。 2 变形梯度张量 光学测量使用数字图像相关法(Digital Image Correlation, DIC)获得被测物体表面的变形情况,因此,计算的是表面应变(Surface Strain)。在连续介质力学中,描述物体运动的方式有两种,即Lagrange描述与Euler描述。前者以不同时刻下物体的位置为研究对象,而后者以固定空间内的变化为对象。本文中我们在Lagrange描述下进行分析。 上图中,参考位置 P Q ⃗ \vec{PQ} P Q ​ ,在 t t t 刻为 p q ⃗ \vec{pq} p q ​ ,P和Q的位移量分别为 u ( X ) u(\bf{X}) u ( X ) , u ( X + d X ) u({\bf{X}}+d\bf{X}) u ( X + d X ) ,该过程的运动描述为 x = χ ( X , t ) {\bf{x}}=\chi({\bf{X}},t) x = χ ( X

深度学习基础知识题库大全

百般思念 提交于 2019-12-28 16:34:26
1、 梯度下降算法 的正确步骤是什么? a.计算预测值和真实值之间的误差 b.重复迭代,直至得到网络权重的最佳值 c.把输入传入网络,得到输出值 d.用随机值初始化权重和偏差 e.对每一个产生误差的神经元,调整相应的(权重)值以减小误差 A.abcde B.edcba C.cbaed D.dcaeb 解析:正确答案 D ,考查知识点-深度学习。 2、已知: - 大脑是有很多个叫做神经元的东西构成,神经网络是对大脑的简单的数学表达。 - 每一个神经元都有输入、处理函数和输出。 - 神经元组合起来形成了网络,可以拟合任何函数。 - 为了得到最佳的神经网络,我们用梯度下降方法不断更新模型 给定上述关于神经网络的描述,什么情况下 神经网络模型 被称为深度学习模型? A.加入更多层,使神经网络的深度增加 B.有维度更高的数据 C.当这是一个图形识别的问题时 D.以上都不正确 解析:正确答案 A ,更多层意味着网络更深。没有严格的定义多少层的模型才叫深度模型,目前如果有超过2层的隐层,那么也可以及叫做深度模型。 3、训练 CNN 时,可以对输入进行旋转、平移、缩放(增强数据)等预处理提高模型泛化能力。这么说是对,还是不对? A.对 B.不对 解析: 对 。如寒sir所说,训练CNN时,可以进行这些操作。当然也不一定是必须的,只是data augmentation扩充数据后,模型有更多数据训练

cs231n笔记:最优化

橙三吉。 提交于 2019-12-27 17:29:48
本节是cs231学习笔记: 最优化 ,并介绍了梯度下降方法,然后应用到逻辑回归中 引言   在上一节 线性分类器 中提到,分类方法主要有两部分组成:1.基于参数的评分函数。能够将样本映射到类别的分值。2.损失函数。用来衡量预测标签和真是标签的一致性程度。这一节介绍第三个重要部分: 最优化 (optimization)。损失函数能让我们定量的评估得到的权重W的好坏,而最优化的目标就是找到一个W,使得损失函数最小。工作流程如下图: (x,y) 是给定的数据集, W 是权重矩阵,通过初始化得到。向前传递到评分函数中得到类别的评分值并存储在向量 f 中。损失函数计算评分函数值 f 与类标签 y 的差值,正则化损失只是一个关于权重的函数。在梯度下降过程中,我们计算权重的梯度,然后使用梯度更新权重。一旦理解了这三个部分的关系,我们可以用更加复杂的评分函数来代替线性映射,比如神经网络、甚至卷积神经网络等,而损失函数和优化过程这两部分则相对保持不变。 梯度下降   梯度下降的思想是:要寻找某函数的最值,最好的方法就是沿着函数的梯度方向寻找,移动量的大小称为步长。梯度下降的公式如下: 我们常常听说过梯度上升、梯度下降,那么两者的区别又是什么呢?其实这两者是一样的,只是公式中的减法变成加法,因此公式为: 梯度上升是用来求函数的最大值,而梯度下降是用来求最小值。普通的梯度下降版本如下: #

深度学习-最优化笔记

徘徊边缘 提交于 2019-12-27 17:29:29
作者:杜客 链接:https://zhuanlan.zhihu.com/p/21360434 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 译者注:本文 智能单元 首发,译自斯坦福CS231n课程笔记 Optimization Note ,课程教师 Andrej Karpathy 授权翻译。本篇教程由 杜客 翻译完成, 堃堃 和 李艺颖 进行校对修改。译文含公式和代码,建议PC端阅读。 原文如下 内容列表: 简介 损失函数可视化 最优化 策略#1:随机搜索 策略#2:随机局部搜索 策略#3:跟随梯度 译者注:上篇截止处 梯度计算 使用有限差值进行数值计算 微分计算梯度 梯度下降 小结 简介 在上一节中,我们介绍了图像分类任务中的两个关键部分: 基于参数的 评分函数。 该函数将原始图像像素映射为分类评分值(例如:一个线性函数)。 损失函数 。该函数能够根据分类评分和训练集图像数据实际分类的一致性,衡量某个具体参数集的质量好坏。损失函数有多种版本和不同的实现方式(例如:Softmax或SVM)。 上节中,线性函数的形式是 ,而SVM实现的公式是: 对于图像数据 ,如果基于参数集 做出的分类预测与真实情况比较一致,那么计算出来的损失值 就很低。现在介绍第三个,也是最后一个关键部分: 最优化Optimization

cs231n笔记(二) 最优化方法

佐手、 提交于 2019-12-27 17:29:20
回顾上一节中,介绍了图像分类任务中的两个要点: 假设函数。 该函数将原始图像像素映射为分类评分值。 损失函数 。该函数根据分类评分和训练集图像数据实际分类的一致性,衡量某个具体参数集的质量好坏。 现在介绍第三个要点,也是最后一个关键部分: 最优化Optimization 。最优化是寻找能使得损失函数值最小化的参数 W 的过程,一旦理解了这三个部分是如何相互运作的,我们将会回到第一个要点,然后将其拓展为一个远比线性函数复杂的函数:首先是神经网络,然后是卷积神经网络。而损失函数和最优化过程这两个部分将会保持相对稳定。 损失函数可视化 : 本节讨论的损失函数一般都是定义在高维度的空间中(比如,在 CIFAR-10 中一个线性分类器的权重矩阵大小是 $[10 \times 3073]$ ,就有 30730 个参数),这样要将其可视化就很困难。然而办法还是有的,在 1 个维度或者 2 个维度的方向上对高维空间进行切片,就能得到一些直观感受。例如,随机生成一个权重矩阵 W ,将其看做向量,该矩阵就与高维空间中的一个点对应。然后沿着某个维度方向前进的同时记录损失函数值的变化。换句话说,就是生成一个随机的方向 $W_1$ 并且沿着此方向计算损失值,计算方法是根据不同的 $a$ 值来计算 $L(W + aW_1)$ 。这个过程将生成一个图表,其 $x$ 轴是 $a$ 值,$y$ 轴是损失函数值

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

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