optim.py

Project URL:https://github.com/Codsir/optim.git

Based on: tensorflow, numpy, copy, inspect

Why Tensorflow?

Tensorflow supports symbol computation well like Automatic derivation and the program

could be excuted with GPU, which will save our time.

dogleg(p_u, p_b, delta, tau = 2)

The Dogleg method to solve the subproblems of trust region method

getGrad(f, x_value)

Get the gradient of function f with tf.gradients()

    f= lambda x:100*(x[1]-x[0]**2)**2 + (1-x[0])**2
x_value = [1.0,2.0]
f_gradients = getGrad(f, x_value)

getHess(f, x_value)

Get the Hessian matrix of f with tf.hessian

TrustRegion_dogleg(f, delta = 0.5, eta = 0, *x_0, tolerance= 0.0001)

Trust region method with subproblems solved by the Dogleg method

ExactLineSearch_quadratic(f, x_k, p_k)

Exact line search method when the target function is quadratic

QuasiNewton(f, *x_0, HUpdateMethod = 'BFGS', LineSearch = ExactLineSearch_quadratic, tolerance = 0.0001)

quasi-Newton method

PenaltySimple(f, c_eq, c_leq, epsilon)

f is the target function, c_eq is a list contains equation constraints,

c_leq is a list contains unequal constrains, epsilon is the terminal parameter

these functions could be function name or anonymous functions, which defined by 'lambda'

The subproblem is solved by Newton Method, but it will be modified in the future because sometimes it's hard to compute the inverse matrix of Hessian matrix.

Example

Demo 1:trust region method with subproblems solved by the Dogleg method

    f = lambda x:100*(x[1]-x[0]**2)**2 + (1-x[0])**2
f.paraLength = 2 ## 这一步不可缺少
x_k, f_k = TrustRegion_dogleg(f, delta = 10)

Demo 2:quasi-Newton method demo

    print('Demo 2:quasi-Newton method demo')
f = lambda x:x[0]**2 + 2 * x[1]**2
f.paraLength = 2
x_0 = np.array([1, 1])
x_k, f_k = QuasiNewton(f, x_0)

Demo 3:penalty function method demo

    print('Demo 3:penalty function method demo')
f = lambda x:x[0] + x[1]
f.paraLength = 2
c_eq = [lambda x:x[0]**2 + x[1]**2 - 2]
c_leq = []
x_k, f_k = PenaltySimple(f, c_eq, c_leq, [-3,-4])

optim.py-使用tensorflow实现一般优化算法的更多相关文章

  1. TensorFlow中的优化算法

    搭建好网络后,常使用梯度下降类优化算法进行模型参数求解,模型越复杂我们在训练神经网络的过程上花的时间就越多,为了解决这一问题,我们就需要找一些优化算法来提高训练速度,TF的tf.train模块中提供了 ...

  2. torch.optim优化算法理解之optim.Adam()

    torch.optim是一个实现了多种优化算法的包,大多数通用的方法都已支持,提供了丰富的接口调用,未来更多精炼的优化算法也将整合进来. 为了使用torch.optim,需先构造一个优化器对象Opti ...

  3. TensorFlow实现与优化深度神经网络

    TensorFlow实现与优化深度神经网络 转载请注明作者:梦里风林Github工程地址:https://github.com/ahangchen/GDLnotes欢迎star,有问题可以到Issue ...

  4. PyTorch-Adam优化算法原理,公式,应用

    概念:Adam 是一种可以替代传统随机梯度下降过程的一阶优化算法,它能基于训练数据迭代地更新神经网络权重.Adam 最开始是由 OpenAI 的 Diederik Kingma 和多伦多大学的 Jim ...

  5. Tensorflow 中的优化器解析

    Tensorflow:1.6.0 优化器(reference:https://blog.csdn.net/weixin_40170902/article/details/80092628) I:  t ...

  6. Adam优化算法

    Question? Adam 算法是什么,它为优化深度学习模型带来了哪些优势? Adam 算法的原理机制是怎么样的,它与相关的 AdaGrad 和 RMSProp 方法有什么区别. Adam 算法应该 ...

  7. 优化算法——拟牛顿法之L-BFGS算法

    一.BFGS算法 在"优化算法--拟牛顿法之BFGS算法"中,我们得到了BFGS算法的校正公式: 利用Sherman-Morrison公式可对上式进行变换,得到 令,则得到: 二. ...

  8. 《深度学习-改善深层神经网络》-第二周-优化算法-Andrew Ng

    目录 1. Mini-batch gradient descent 1.1 算法原理 1.2 进一步理解Mini-batch gradient descent 1.3 TensorFlow中的梯度下降 ...

  9. 【优化算法】Greedy Randomized Adaptive Search算法 超详细解析,附代码实现TSP问题求解

    01 概述 Greedy Randomized Adaptive Search,贪婪随机自适应搜索(GRAS),是组合优化问题中的多起点元启发式算法,在算法的每次迭代中,主要由两个阶段组成:构造(co ...

随机推荐

  1. Rocket - tilelink - AtomicAutomata

    https://mp.weixin.qq.com/s/O7VTHqpCFNJQi3EpucXkIw   简单介绍AtomicAutomata的实现.(细节问题太多,恕不完全表述.)   ​​   1. ...

  2. Rocket - util - Counters

    https://mp.weixin.qq.com/s/q7R2Dn9p9cch_ABN4raReQ   介绍几种计数器的实现,以及其中的一点小细节.   ​​   1. ZCounter   ​​   ...

  3. Rocket - util - Broadcaster

    https://mp.weixin.qq.com/s/ohBVNAXZUA538qSxfBGMKA   简单介绍Broadcaster的实现.   ​​   1. Broadcaster   广播即是 ...

  4. ASP.NET关于书籍详情和删除的Demo(HttpHandler进行页面静态化[自动生成html网页]+Entity Framework通过类创建数据库+EF删查)

    这次的Demo如标题所示, 首先第一步EF创建数据库 创建两个类,一个是图书类,一个是图书类别的类 using System; using System.Collections.Generic; us ...

  5. (Java实现) 细胞

    细胞 Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total Submission(s ...

  6. Java实现 蓝桥杯VIP 算法训练 sign函数

    试题 算法训练 sign函数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给定实数x,输出sign(x)的值. sign(x)是符号函数,如果x>0,则返回1:如果x=0, ...

  7. java实现第四届蓝桥杯金蝉素数

    金蝉素数 考古发现某古墓石碑上刻着一个数字:13597,后研究发现: 这是一个素数! 并且,去掉首尾数字仍是素数! 并且,最中间的数字也是素数! 这样特征的数字还有哪些呢?通过以下程序的帮助可以轻松解 ...

  8. java实现第七届蓝桥杯平方圈怪

    平方圈怪 题目描述 如果把一个正整数的每一位都平方后再求和,得到一个新的正整数. 对新产生的正整数再做同样的处理. 如此一来,你会发现,不管开始取的是什么数字, 最终如果不是落入1,就是落入同一个循环 ...

  9. vue的第一个commit分析

    为什么写这篇vue的分析文章? 对于天资愚钝的前端(我)来说,阅读源码是件不容易的事情,毕竟有时候看源码分析的文章都看不懂.每次看到大佬们用了1-2年的vue就能掌握原理,甚至精通源码,再看看自己用了 ...

  10. 关于linux免密登录及ssh客户端的使用

    操作系统环境: CentOS Linux release 7.7.1908 (Core) 1.首先在linux服务器上,使用ssh-keygen命令生成密钥对文件(一直回车即可,默认使用rsa算法), ...