V(t) = y*V(t-1) + learning_rate*G(x)
x(t) = x(t-1) - V(t)

参考:https://arxiv.org/pdf/1609.04747.pdf

DL训练面临的典型困难

  1. 普通的小批梯度下降法并不能保证很好的收敛性,但它提出了一些需要解决的挑战:选择合适的学习率可能是困难的。
  2. 学习速率过小会导致收敛速度过慢,而学习速率过大会阻碍收敛,导致损失函数在最小值附近波动甚至发散。
  3. 一种办法,可以在训练过程中调整学习率,例如退火,即根据预先定义的计划表减少学习率,或当各时期之间目标的变化低于阈值时。然而,这些进度表和阈值必须提前定义,因此不能适应数据集的特点,此外,相同的学习率适用于所有参数更新。如果我们的数据是稀疏的,并且我们的特征具有非常不同的频率,我们可能不希望将它们全部更新到相同的程度,而是对很少发生的特征就行更大的更新。
  4. 最小化神经网络中常见的高度非凸误差函数的另一个关键挑战是避免陷入大量次优局部极小值。Dauphin等人的[5]认为,这种困难实际上不是来自于局部极小值,而是来自鞍点,即一维向上、一维向下倾斜的点。这些鞍点通常被相同误差的平台所包围,这使得SGD很难逃脱,因为梯度在所有维度上都接近于零。

Mini-batch gradient descent

  这是ML训练基本原理。一般不用直接梯度下降法就行训练

tf.train.GradientDescentOptimizer

Momentum(动量法)

更新公式如下,其中η为学习率(一般为0.9),用法:

tf.train.MomentumOptimizer

        

Nesterov accelerated gradient(NAG)

更新公式如下,用法:

Adaptive Moment Estimation (Adam)

tf.train.AdamOptimizer

主要DL Optimizer原理与Tensorflow相关API的更多相关文章

  1. TensorFlow - 相关 API

    来自:https://cloud.tencent.com/developer/labs/lab/10324 TensorFlow - 相关 API TensorFlow 相关函数理解 任务时间:时间未 ...

  2. TensorFlow — 相关 API

    TensorFlow — 相关 API TensorFlow 相关函数理解 任务时间:时间未知 tf.truncated_normal truncated_normal( shape, mean=0. ...

  3. tensorflow相关API的学习

    学习目录 1.tensorflow相关函数理解 (1)tf.nn.conv2d (2)tf.nn.relu (3)tf.nn.max_pool (4)tf.nn.dropout (5)tf.nn.si ...

  4. [原创]java WEB学习笔记44:Filter 简介,模型,创建,工作原理,相关API,过滤器的部署及映射的方式,Demo

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  5. java 11 移除的一些其他内容,更简化的编译运行程序,Unicode 10,移除了不太使用的JavaEE模块和CORBA技术,废除Nashorn javascript引擎,不建议使用Pack200 相关api

    移除的一些其他内容 移除项 移除了com.sun.awt.AWTUtilities 移除了sun.misc.Unsafe.defineClass, 使用java.lang.invoke.MethodH ...

  6. Batch Normalization原理及其TensorFlow实现——为了减少深度神经网络中的internal covariate shift,论文中提出了Batch Normalization算法,首先是对”每一层“的输入做一个Batch Normalization 变换

    批标准化(Bactch Normalization,BN)是为了克服神经网络加深导致难以训练而诞生的,随着神经网络深度加深,训练起来就会越来越困难,收敛速度回很慢,常常会导致梯度弥散问题(Vanish ...

  7. 开源框架---通过Bazel编译使用tensorflow c++ API 记录

    开源框架---通过Bazel编译使用tensorflow c++ API 记录 tensorflow python API,在python中借用pip安装tensorflow,真的很方便,几句指令就完 ...

  8. TensorFlow Keras API用法

    TensorFlow Keras API用法 Keras 是与 TensorFlow 一起使用的更高级别的作为后端的 API.添加层就像添加一行代码一样简单.在模型架构之后,使用一行代码,可以编译和拟 ...

  9. OpenGL FrameBufferCopy相关Api比较(glCopyPixels,glReadPixels,glCopyTexImage2D,glFramebufferTexture2D)

    OpenGL FrameBufferCopy相关Api比较 glCopyPixels,glReadPixels,glCopyTexImage2D,glFramebufferTexture2D 标题所述 ...

随机推荐

  1. 前端基础div(六)

    实例 文档中的一个部分会显示为绿色: <div style="color:#00FF00"> <h3>This is a header</h3> ...

  2. odoo里API解读

    Odoo自带的api装饰器主要有:model,multi,one,constrains,depends,onchange,returns 七个装饰器. multimulti则指self是多个记录的合集 ...

  3. Java规范的三种注释方式:

    1.单行注释 // //单行注释 2.多行注释 /* */ /* 多行 注释 */ 3.文档注释[java特有的] /** */ ◆注释内容可以被JDK提供的工具javadoc所解析,生成一套以网页文 ...

  4. 基于Redisson实现分布式锁源码解读

    文章目录 一.分布式锁的概念 和 使用场景 二.将redis官网对于分布式锁(红锁)的定义和Redisson实现做概括性总结 三.基于Redisson的分布式实现方案 四.加锁过程分析 五.锁重入过程 ...

  5. maven 与profile,resources,properties 关系

    top 的 pom.xml 看<profiles>的标签 <profiles> <!--dat环境--> <profile> <id>DAT ...

  6. git学习心得之git跨分支提交代码

    最近在工作中遇到了git跨分支提交代码的问题,本地拉的是远程master分支的代码,需要将本地修改代码提交到远程temp分支. 1.在gitlab上对相应项目fork本地分支 2.更新本地代码,将远程 ...

  7. SQL注入之二次,加解密,DNS等注入

    #sql注入之二次注入 1.注入原理 二次注入可以理解为,构造恶意数据存储在数据库后,恶意数据被读取并进入到了SQL查询语句所导致的注入.恶意数据插入到数据库时被处理的数据又被还原并存储在数据库中,当 ...

  8. 新一代垃圾回收器ZGC的探索与实践

    ZGC(The Z Garbage Collector)是JDK 11中推出的一款低延迟垃圾回收器,它的设计目标包括: 停顿时间不超过10ms: 停顿时间不会随着堆的大小,或者活跃对象的大小而增加: ...

  9. couchdb(5984)未授权访问

    启动环境 测试 poc地址 https://github.com/vulhub/vulhub/blob/master/couchdb/CVE-2017-12636/exp.py map -p 5984 ...

  10. 大数据学习(02)——HDFS入门

    Hadoop模块 提到大数据,Hadoop是一个绕不开的话题,我们来看看Hadoop本身包含哪些模块. Common是基础模块,这个是必须用的.剩下常用的就是HDFS和YARN. MapReduce现 ...